Frage
Ich bin neu in Python. Ich habe versucht, eine einfache Funktion in einer Klasse zu definieren und auszuführen.
Kann jemand bitte sagen Sie mir, was in meinem Code falsch:
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')
Ich erhalte unten Fehler
Typeerror: m1 () nimmt genau 3 Positionsargumente (4 gegeben)
Lösung
Instanzmethoden nehmen Instanz als erstes Argument:
class A :
def m1(self, name,age,address) :
print('Name -->',name)
print('Age -->',age)
print('Address -->',address)
Sie können auch verwenden @staticmethod Dekorateur statische Funktion zu erstellen:
class A :
@staticmethod
def m1(name,age,address) :
print('Name -->',name)
print('Age -->',age)
print('Address -->',address)
Andere Tipps
Der erste Parameter ist immer das Objekt selbst.
class A :
def m1(self, name,age,address) :
print('Name -->',name)
print('Age -->',age)
print('Address -->',address)
Nach Konvention Methoden in einer Klasse Instanz einen Objektverweis als erstes Argument erhalten, mit dem Namen 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')
>>>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow