Der folgende Code funktioniert nicht wie erwartet. Offenbar kann ich nicht die eigene Typdefinition innerhalb der Klasse Klassen verwenden:typisierte Python: Verwendung der Klassen eigenen Typ innerhalb der Klassendefinition
class Foo:
def __init__(self, key :str) -> None:
self.key = key
def __eq__(self, other :Foo) -> bool:
return self.key == other.key
print('should be true: ', Foo('abc') == Foo('abc'))
print('should be false: ', Foo('abc') == Foo('def'))
Das Ergebnis es läuft:
Traceback (most recent call last):
File "class_own_type.py", line 1, in <module>
class Foo:
File "class_own_type.py", line 5, in Foo
def __eq__(self, other :Foo) -> bool:
NameError: name 'Foo' is not defined
Auch die Überprüfung der Code mit mypy
kehrt:
class_own_type.py:5: error: Argument 1 of "__eq__" incompatible with supertype "object"
Wie kann ich diesen Code korrigieren, sowohl für Python als auch für mypy
?
Dies macht den Code laufen ohne Fehler, aber ich habe noch die mypy Fehler. – macjan
Das ist falsch; wie Macjan darauf hinweist, behebt dies den Python-Fehler, aber es mypy nicht beruhigen. – weberc2
@ weberc2 Nun, ich weiß nicht, wie ich es beheben kann, und ich kann es nicht löschen, weil es die akzeptierte Antwort ist. Wenn Sie die Antwort wissen, könnten Sie es bearbeiten? – wim