当前位置: 首页 > 知识库问答 >
问题:

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

宰修能
2023-03-14

我的问题与新Python的类型提示有关。我试图在对象的方法中添加一个类型提示,它具有与对象相同类型的参数,但PyCharm将我标记为错误(未解析引用'Foo')。问题如下:

class Foo:

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

因此,问题是如何正确定义其他\u foo参数的类型。也许\uuuu class\uuuu是正确的?

共有1个答案

鄢承运
2023-03-14

在类内部,类还没有定义,导致一个NameError(和PyCharm抱怨)。

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

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

基本上,如果类型注释是字符串,则在加载整个模块后,它将被evaled,因此它可以计算为Foo类。

 类似资料:
  • 我想这样设置参数的类型: 当我尝试这样做时,会引发错误:NameError:名称'Tree'未定义

  • 我正在构建一个快速API服务器,代表我的客户提供代码。 所以我的目录结构是: 在中我有: 在中我有: 我不知道我的客户的代码(在中)会是什么类型。但我想使用FastAPI内置的OpenAPI模式生成(而不是要求我的客户接受和解析JSON输入)。 有没有办法将要的参数类型设置为与 的参数类型相同? 似乎有一种方法是用花哨的字符串插值来执行,但我担心这不是真正的Pythonic,我还必须清理用户的输入

  • 我在Java中有两个几乎相同的方法。唯一的区别是它们有不同的参数类型。它们使用泛型并返回输入参数的类型T。我怎样才能摆脱重复的代码?下面是我的两个方法。最后,它们都使用不同的类型调用Spring。否则,方法是相同的。

  • 问题内容: 我已经看到了一些类似的问题两种不同的类型如何使用接口在golang中实现相同的方法?,但就我而言,我的类型没有相同的基本类型。我的类型是不同大小的数组。 因此,可能不重复两种方法GetByte0()? 问题答案: 例如, 输出:

  • 我的两个方法中的操作是相同的,但是输入参数类型不同,那么我该如何优化这两个方法,似乎没有那么重复?因为它们的操作是相同的,但参数类型不同,我该怎么做才能使这段代码更优雅呢?

  • 我想使返回数据类型的的函数与传入的参数的数据类型相同。例如,我会这样调用函数: 因为我将一个传递给,所以它返回了一个