如何在 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!"

基本上,如果一个类型注解是一个字符串,它会在整个模块加载后被evaled,所以它可以评估为Foo类。

【讨论】:

以上是关于如何在 PEP484 之后的方法参数中设置与类相同的类型? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Kubernetes 上的 Quarkus 中设置与 Keycloak 的 OIDC 连接

Python 中的 Numpy 类型提示 (PEP 484)

如何在 GCP 中设置与 MongoDB Docker 容器的连接

PEP-484 具有自己类型的类型注释

如何在postgresql中设置与id不同的自动增量字段

Python PEP 484 类型提示 -> 返回类型是类名还是无?