Pregunta
Soy nuevo en Python. Yo estaba tratando de definir y ejecutar una simple función en una clase.
Puede alguien por favor dígame lo que está mal en mi 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')
Me estoy haciendo por debajo de error
TypeError: m1 () toma exactamente 3 argumentos posicionales (4 dado)
Solución
Los métodos de instancia toman ejemplo como primer argumento:
class A :
def m1(self, name,age,address) :
print('Name -->',name)
print('Age -->',age)
print('Address -->',address)
También puede utilizar @staticmethod decorador para crear la función estática:
class A :
@staticmethod
def m1(name,age,address) :
print('Name -->',name)
print('Age -->',age)
print('Address -->',address)
Otros consejos
El primer parámetro es siempre el objeto mismo.
class A :
def m1(self, name,age,address) :
print('Name -->',name)
print('Age -->',age)
print('Address -->',address)
Por convención, los métodos de una instancia de clase reciben una referencia de objeto como la primera discusión, self
llamado.
>>> 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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow