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