Wie kann ich bei der Definition einer Klasse Argumente in die Signaturen ihrer Methoden aufnehmen, die derselben Klasse angehören müssen? Ich bin eine Graphenstruktur bauen, die wie das funktionieren sollen, aber hier ist ein vereinfachtes Beispiel:Methodensignaturargumente vom Typ (self)
class Dummy:
def __init__(self, value: int, previous: Dummy=None):
self._value = value
self._previous = previous
@property
def value(self):
return self._value
def plus_previous(self):
return self.value + self._previous.value
d1 = Dummy(7)
d2 = Dummy(3, d1)
d2.plus_previous()
Diese in den folgenden Fehlern führt:
NameError: name 'Dummy' is not defined
Ich meine, ich kann es tun, der Python 2 Art und Weise, aber ich hatte gehofft, es ist ein python-3-ic Lösung als das:
class Dummy:
def __init__(self, value: int, previous=None):
assert type(previous) is Dummy or previous is None
...
PS: Natürlich, ich kann nicht verwendet werden: Typ (Selbst-) als selbst ist nicht definiert noch in der Signatur. Ich konnte nur das tun: Assert-Typ (früher) ist Typ (Selbst) , die zumindest eine kleine Verbesserung ist –
Als Nebenbemerkung, erkennen Sie, dass Typ Hinweise nicht wie die'Asssert'-Anweisung funktionieren wird, richtig? Sie werden nicht erzwungen. Sie sind * Hinweise *. –