如何在PEP484之后的方法参数中设置与类相同的类型?

gar*_*des 5 python oop types pycharm python-3.x

我的问题与新的Python类型提示有关.我正在尝试在对象的方法中添加一个类型提示,该方法具有相同类型的对象的参数,但PyCharm将我标记为error(unresolved reference 'Foo').问题如下:

class Foo:

    def foo_method(self, other_foo: Foo):
        return "Hello World!"
Run Code Online (Sandbox Code Playgroud)

所以问题是如何other_foo正确定义参数类型.也许__class__是对的?

Art*_*yer 8

在类的内部,类尚未定义,导致NameError(和PyCharm抱怨).

要解决此问题,请使用前向声明:

class Foo:
    def foo_method(self, other_foo: "Foo"):
        return "Hello World!"
Run Code Online (Sandbox Code Playgroud)

基本上,如果类型注释是一个字符串,则eval在加载整个模块后编辑它,因此它可以计算到Foo该类.