tigerwood hat geschrieben:
Nein, das ist falsch. Die Zahl 123 wird nirgends "erstellt", die gibt es einfach, und hier wird mit ihr
als Argument ein Foo-Objekt
initialisiert. Deswegen heißt die Methode übrigens
__init__().
tigerwood hat geschrieben:
Nein, eben genau nicht.
double_value() ist eine Methode, die den Zustand des Objekts, auf dem sie aufgerufen wird - hier
f - ändert, aber
nichts zurückgibt. Dieses
nichts hat in Python einen Namen:
None. Wenn du diesen Rückgabewert einem Namen zuweist, welchen Wert hat dann anschließend dieser Name?
Ich versuch es nochmal etwas weniger abstrakt:
Code: Alles auswählen
>>> class Person:
... def __init__(self, name, kontostand):
... self.name = name
... self.kontostand = kontostand
... def zahle_ein(self, betrag):
... self.kontostand += betrag
...
>>> p = Person('Hansi', 123.45)
>>> p.name
'Hansi'
>>> p.kontostand
123.45
>>> p.zahle_ein(45.67)
>>> p.kontostand
169.12
>>> q = Person('Gretel', 99.99).zahle_ein(100.00)
>>> q is None
True
>>> q.zahle_ein(555.55)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'zahle_ein'
Schau dir insbesondere die Zeilen 8 und 16 an und vergleiche sie. Offensichtlich wird in Zeile 8 ein Person-Objekt erzeugt und an den Namen p gebunden. In Zeile 16 wird ebenfalls ein Person-Objekt erzeugt, aber das wird
nicht an einen Namen gebunden, sondern auf ihm wird die Methode
zahle_ein() aufgerufen, und
deren Ergebnis wird dann an
q zugewiesen.
Und nun die € 1.000.000,00 Frage: Was gibt diese Methode als Ergebnis zurück?
In specifications, Murphy's Law supersedes Ohm's.