Python3類方法報錯takes 0 positional arguments but 1 was given
問題:在學習Python物件導向時,程式報錯takes 0 positional arguments but 1 was given
首先,定義了一個類如下:
#定義一個類
class cat:
#屬性
#方法
def eat():
print("貓可以吃。")
def catch():
print("貓可以抓老鼠")
#建立一個物件
tom=cat()
#呼叫tom指向物件中的方法
tom.catch()
執行時發現程式報錯:catch() takes 0 positional arguments but 1 was given
意思是catch()這個方法並沒有位置引數,卻被傳進了一個位置引數。
經查閱發現:Python在類中定義方法的時候,方法會被傳進一個引數,即當前物件的地址,所以一般在類中定義方法的時候,必須在方法中至少定義一個引數。一般情況下我們將其命名為"self",但是例項方法的第一個引數不一定要叫self,其實完全可以叫任意引數名,比如:a,b,c等等,只是約定俗成的把該引數命名為self,因為這樣使程式碼具有更好的可讀性。
修改後的程式碼:
#定義一個類
class cat:
#屬性
#方法
def eat(lf):
print("貓可以吃。")
def catch(elf):
print("貓可以抓老鼠")
#建立一個物件
tom=cat()
#呼叫tom指向物件中的方法
tom.catch()
注:相關資料:
- 原文:在類中定義的方法預設是例項方法,定義例項方法的方法與定義定義函式的方法基本相同,只是例項方法的第一個引數會被繫結到方法的呼叫者(該類的例項)———因此例項方法至少應該定義一個引數,該引數通常會被命名為self。 ————出自《瘋狂Python講義》
2)
————出自菜鳥教https://www.runoob.com/python/python-object.html
相關文章
- takes 0 positional arguments but 1 was given
- main() takes 0 positional arguments but 1 was givenAI
- Python 錯誤之函式takes 0 positional arguments but 1 was givenPython函式
- bam檔案出錯行(takes from 3 to 5 positional arguments but 6 were given)
- 【已解決】TypeError: __init__() takes 1 positional argument but 2 were givenError
- python3 print報錯Python
- ORA-00600: internal error code, arguments: [2103], [1], [0], [1], [900], [], [],Error
- vipca報錯 Error 0PCAError
- Python中小錯誤 之 object() takes no parametersPythonObject
- hadoop報錯:could only be replicated to 0 nodes, instead of 1Hadoop
- python3的urllib2報錯問題解決方法Python
- python3升級後的報錯Python
- 記一次ORA-00600: internal error code, arguments: [kcbz_check_objd_typ], [0], [0], [1], [], [], [], []ErrorOBJ
- python3中 print不加括號報錯!Python
- 引入第三方庫報錯Could not find method apt() for argumentsAPT
- PHP 類多次引用報錯PHP
- 023 Given an integer n. get the number of 0, 2, 4 from all the values from [0, n]
- flutter開發提示Flutter device daemon #1報錯解決方法Flutterdev
- TypeError: object() takes no parametersErrorObject
- redis報錯Windows error 0x70RedisWindowsError
- 電腦藍色畫面報錯0x00000006的解決方法
- ORA-00600: internal error code, arguments: [kgantc_1]錯誤排查記錄Error
- 關於ORA-00600: internal error code, arguments: [ktrexc_1]錯誤Error
- JPA-style positional param was not an integral ordinal錯誤解決辦法
- Qt 報錯 “類名”does not name a typeQT
- ORA-00600: internal error code, arguments: [2662], [0],Error
- JavaScript 深入之類陣列物件與 argumentsJavaScript陣列物件
- ora-00600-ktagetg0-1錯誤
- spark-submit執行jar包報錯找不到類的解決方法SparkMITJAR
- ORA-00600: internal error code, arguments: [kqlnrc_1], [0x70000029A6C9410], [],Error
- python3類的詳解,原始碼可以直接複製除錯Python原始碼除錯
- python3中reload()函式報錯怎麼解決Python函式
- SQL Tuning Advisor報錯ORA-00600: internal error code, arguments: [kesqsMakeBindValue:obj]SQLErrorOBJ
- dbfread報錯ValueError錯誤解決方法Error
- excel in place無法使用,報錯0k000Excel
- hive使用報錯解決方法Hive
- 各種報錯處理方法
- docker 打包 opencv-python,libGL.so.1 報錯解決方法DockerOpenCVPython