Pergunta

Eu sou novo para Python. Eu estava tentando definir e executar uma função simples em uma classe.

Alguém pode por favor me diga o que está errado no meu código:

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')

Estou ficando abaixo de erro
TypeError: m1 () recebe exatamente 3 argumentos posicionais (4 dado)

Foi útil?

Solução

Métodos de instância tomar instância como primeiro argumento:

class A :
    def m1(self, name,age,address) :
        print('Name -->',name)
        print('Age -->',age)
        print('Address -->',address)

Você também pode usar @staticmethod decorador para criar função estática:

class A :
    @staticmethod
    def m1(name,age,address) :
        print('Name -->',name)
        print('Age -->',age)
        print('Address -->',address)

Outras dicas

O primeiro parâmetro é sempre o objeto em si.

class A :
    def m1(self, name,age,address) :
        print('Name -->',name)
        print('Age -->',age)
        print('Address -->',address)

Por convenção, os métodos em uma instância de classe recebe uma referência de objeto como o 1º argumento, chamado 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')
>>> 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top