Определение функции в Python - PullRequest
2 голосов
/ 06 апреля 2009

Я новичок в 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 дано)

Ответы [ 3 ]

19 голосов
/ 06 апреля 2009

Методы экземпляра принимают экземпляр в качестве первого аргумента:

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)
4 голосов
/ 06 апреля 2009

Первым параметром всегда является сам объект.

class A :
    def m1(self, name,age,address) :
        print('Name -->',name)
        print('Age -->',age)
        print('Address -->',address)
4 голосов
/ 06 апреля 2009

По соглашению, методы в экземпляре класса получают ссылку на объект в качестве 1-го аргумента с именем 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')
>>> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...