Beginnen wir mit dem Unterschied zwischen Methoden und Funktionen, grundsätzlich gehört eine Methode zu einem Objekt, eine Funktion dagegen nicht. So zum Beispiel
def myFunction():
return "F"
class MyClass:
value = 0
def myMethod(self, value):
old = self.value
self.value = value
return old
myClassInstance = MyClass()
print myClassInstance.myMethod(3)
# 0
print myClassInstance.myMethod(33)
# 3
print myFunction()
# F
Beachten Sie, dass das Verfahren auf die Instanz gebunden und es macht keinen Sinn, die Methode aufzurufen, bevor die Instanz erstellt wird. In diesem Sinne sollte Ihr Fehler mehr Sinn machen. Die Methode kann nicht ohne eine Instanz (self) aufgerufen werden. Dies ist nicht die einzige Art von Methode, zum Beispiel gibt es "statische Methoden". Statische Methoden sind für die Klasse definiert, sie werden jedoch ohne eine Instanz aufgerufen. Zum Beispiel:
class MyClass:
@staticmethod
def myStaticMethod():
return "static method"
# Consider using an instance attribute instead of a class attribute
def __init__(self):
self.instance_attribute = MyClass.myStaticMethod()
# Or if you need a class attribute it needs to go outside the class block
MyClass.class_attribute = MyClass.myStaticMethod()
Es ist gut, den ganzen Fehler in den Körper Ihrer Frage zu stellen. –
Dies würde ein Klassenattribut für 'MyClass' setzen. Ich bin mir ziemlich sicher, dass du das nicht willst. Kannst du bitte den Kontext dieses Codes erklären, damit wir dir Ratschläge geben können, wie es richtig gemacht wird? –
Werfen Sie auch einen Blick auf PEP8, camelCase in Methodennamen verletzt meine Augen (ja, ich bin ein PEP8 nazy). –