Python3类方法报错takes 0 positional arguments but 1 was given

您所在的位置:网站首页 翻译:tight Python3类方法报错takes 0 positional arguments but 1 was given

Python3类方法报错takes 0 positional arguments but 1 was given

2023-10-22 17:22| 来源: 网络整理| 查看: 265

问题:在学习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)在这里插入图片g述       ————出自菜鸟教https://www.runoob.com/python/python-object.html



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3