如何在 PEP484 之后的方法参数中设置与类相同的类型? [复制]
Posted
技术标签:
【中文标题】如何在 PEP484 之后的方法参数中设置与类相同的类型? [复制]【英文标题】:How can I set the same type as class in method's parameter following PEP484? [duplicate] 【发布时间】:2017-12-01 14:10:46 【问题描述】:我的问题与新 Python 的类型提示有关。我试图在对象的方法中添加类型提示,该方法具有与对象相同类型的参数,但 PyCharm 将我标记为错误 (unresolved reference 'Foo'
)。问题如下:
class Foo:
def foo_method(self, other_foo: Foo):
return "Hello World!"
所以问题是如何正确定义other_foo
参数的类型。也许__class__
是正确的?
【问题讨论】:
【参考方案1】:在类内部,类尚未定义,导致NameError
(和 PyCharm 抱怨)。
要解决这个问题,请使用forward declarations:
class Foo:
def foo_method(self, other_foo: "Foo"):
return "Hello World!"
基本上,如果一个类型注解是一个字符串,它会在整个模块加载后被eval
ed,所以它可以评估为Foo
类。
【讨论】:
以上是关于如何在 PEP484 之后的方法参数中设置与类相同的类型? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Kubernetes 上的 Quarkus 中设置与 Keycloak 的 OIDC 连接
Python 中的 Numpy 类型提示 (PEP 484)