Вопрос
Я новичок в 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')
Я получаю ошибку ниже
ТипОшибка:m1() принимает ровно 3 позиционных аргумента (4 задано)
Решение
Методы экземпляра принимают экземпляр в качестве первого аргумента:
class A :
def m1(self, name,age,address) :
print('Name -->',name)
print('Age -->',age)
print('Address -->',address)
Вы также можете использовать декоратор @staticmethod чтобы создать статическую функцию:
class A :
@staticmethod
def m1(name,age,address) :
print('Name -->',name)
print('Age -->',age)
print('Address -->',address)
Другие советы
Первым параметром всегда является сам объект.
class A :
def m1(self, name,age,address) :
print('Name -->',name)
print('Age -->',age)
print('Address -->',address)
По соглашению, методы экземпляра класса получают ссылку на объект в качестве первого аргумента с именем 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')
>>>
Не связан с StackOverflow