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
相關文章
- 【已解決】TypeError: __init__() takes 1 positional argument but 2 were givenError
- python3 print報錯Python
- 023 Given an integer n. get the number of 0, 2, 4 from all the values from [0, n]
- 引入第三方庫報錯Could not find method apt() for argumentsAPT
- python3升級後的報錯Python
- python3中 print不加括號報錯!Python
- JavaScript 深入之類陣列物件與 argumentsJavaScript陣列物件
- TypeError: object() takes no parametersErrorObject
- 電腦藍色畫面報錯0x00000006的解決方法
- 易優cms系統報錯unserialize(): Error at offset 0 of 1571 bytes_Eyoucms系統報錯問題解決方法Error
- PHP 類多次引用報錯PHP
- JPA-style positional param was not an integral ordinal錯誤解決辦法
- win10系統版本更新報錯0x8007000d解決方法Win10
- flutter開發提示Flutter device daemon #1報錯解決方法Flutterdev
- Function.caller, arguments.caller, arguments.callee, arguments.callee.calllerFunction
- 解決jpa查詢時,Unable to locate Attribute with the the given name錯誤
- 解決The given version [xx] is not supported, only version 1 to 10 is supported in this buildUI
- Python成功解決TypeError: __init__() missing 1 required positional argument: ‘comment‘PythonErrorUI
- python3中reload()函式報錯怎麼解決Python函式
- docker 打包 opencv-python,libGL.so.1 報錯解決方法DockerOpenCVPython
- Windows更新報錯 0xc1900101 0x30018 解決方案Windows
- 深入學習js之——類陣列物件與arguments #11JS陣列物件
- dbfread報錯ValueError錯誤解決方法Error
- BigDecimal的divide方法報錯DecimalIDE
- spark-submit執行jar包報錯找不到類的解決方法SparkMITJAR
- Qt 報錯 “類名”does not name a typeQT
- OO ALV 訪問保護類方法 實現欄位報錯紅框定位
- win10系統應用商店安裝程式報錯0x80010108修復方法Win10
- JavaScript之argumentsJavaScript
- JavaScript arguments 物件JavaScript物件
- JS的argumentsJS
- hive使用報錯解決方法Hive
- anacond 或python3 報check_hostname requires server_hostname錯誤PythonUIServer
- win10系統錯誤0xc0000142修復方法_win10提示錯誤程式碼0xc0000142解決方法Win10
- 測試類啟動報錯缺失servletWebServerApplicationContextServletWebServerAPPContext
- IDEA報錯Process finished with exit code -1073741819 (0xC0000005)Idea
- 安裝WSL報錯0x80370102解決方案
- takes_ownership(s)語句執行