我是Python新手。我试图在一个类中定义并运行一个简单的函数。
有人可以告诉我我的代码有什么问题:
class A :
def m1(name,age,address) :
print('Name -->',name)
print('Age -->',age)
print('Address -->',address)
>>> a = A()
>>> a.m1('X',12,'XXXX')
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
a.m1('X',12,'XXXX')
我收到了以下错误 TypeError:m1()只需要3个位置参数(给定4个)
答案 0 :(得分:19)
实例方法将实例作为第一个参数:
class A :
def m1(self, name,age,address) :
print('Name -->',name)
print('Age -->',age)
print('Address -->',address)
您还可以使用@staticmethod decorator创建静态功能:
class A :
@staticmethod
def m1(name,age,address) :
print('Name -->',name)
print('Age -->',age)
print('Address -->',address)
答案 1 :(得分:4)
按照惯例,类实例中的方法接收一个对象引用作为第一个参数,名为self
。
>>> class A:
... def m1(self,name,age,address):
... print('Name -->',name)
... print('Age -->',age)
... print('Address -->',address)
...
>>> a=A()
>>> a.m1('X',12,'XXXX')
('Name -->', 'X')
('Age -->', 12)
('Address -->', 'XXXX')
>>>
答案 2 :(得分:4)
第一个参数始终是对象本身。
class A :
def m1(self, name,age,address) :
print('Name -->',name)
print('Age -->',age)
print('Address -->',address)