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)

¿Fue útil?

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
scroll top