0
以下代碼不能按預期方式工作。顯然,我不能使用類自己的類型內的類定義:鍵入python:在類定義中使用類自己的類型
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'))
運行它的結果是:
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
而且,與mypy
返回檢查代碼:
class_own_type.py:5: error: Argument 1 of "__eq__" incompatible with supertype "object"
如何糾正這段代碼對於Python和mypy
都有效?
這使得沒有錯誤的代碼運行,但我仍然得到mypy錯誤。 – macjan
這是錯誤的;正如macjan指出的那樣,這樣可以修復Python錯誤,但它不會安撫mypy。 – weberc2
@ weberc2那麼,我不知道如何解決它,我不能刪除它,因爲這是被接受的答案。如果你知道答案,你可以編輯它嗎? – wim