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

时间:2017-06-28 09:28:13

标签: python python-3.x oop types pycharm

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

class Foo:

    def foo_method(self, other_foo: Foo):
        return "Hello World!"

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

1 个答案:

答案 0 :(得分:7)

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

要解决此问题,请使用forward declarations

class Foo:
    def foo_method(self, other_foo: "Foo"):
        return "Hello World!"

基本上,如果类型注释是一个字符串,则在加载整个模块后它是eval,因此它可以评估为Foo类。