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

PYTHON3:如何使用稍后为函数注释定义的类型?

邵浩大
2023-03-14

问题是这样的:

class A():
    def foo() -> B:
        pass

class B():
    def bar() -> A:
        pass

这将引发名称错误:未定义名称“B”。

所以为了检查类型,我不愿意改变-

为了进一步讨论,我真的看不出像def foo(a:'x',b: 5-6,c: list)这样的注释有什么意义-

共有2个答案

呼延明朗
2023-03-14

好的,没有办法直接使用注释语法,但是可以修改函数对象的\uuu注释\uuu字典。

class A():
    def foo():
        pass

class B():
    def bar() -> A:
        pass

A.foo.__annotations__["return"] = B
黄俊誉
2023-03-14

我找到了一个与c/c非常相似的解决方法

测试在Py魅力3

class A: pass
class B: pass

class A(object):

    def foo(self, b: B) -> B:

        #CAN auto complete
        b.bar()

        return B()

class B(object):

    def bar(self) -> A:

        return A()

#CAN auto complete
A().foo(B()).bar()
 类似资料:
  • 问题是我写了简单的注释处理器,它根本不处理类型注释。simple annotations processor的源代码如下所示: 有什么想法如何使用或如何通过SimpleAnnotationsProcessor访问类型注释吗?使用可插入的注释处理API对我来说是不必要的,我认为它会比Java反射有更好的性能。无论如何,我也不知道如何通过Java反射访问类型注释。

  • 问题内容: 我想获得应用程序中带有注释的类的完整列表。此操作的最佳机制是什么? ps。例如,JAX-RS实现如何找到所有带有注释的类?我想使用相同的机制。 问题答案: 通常,这是通过称为类路径扫描的过程完成的。通常,类加载器不允许扫描类路径上的所有类。但是通常唯一使用的类加载器是我们可以从中检索目录和jar文件的列表(请参阅getURLs),然后一个个地打开它们以列出可用的类。 这种方法由Scan

  • 这是简化的代码 那么如何在类型注释中使用名称Myclass呢?我的TypeScript版本是3.2.2

  • 我在一个使用Selenium和C#的自动化项目中工作。我使用Page Object模式定义每个页面(带有它们的定位器),然后在一个测试类中分别定义测试。我有一个Page类,它是页面的基类,我在其中调用:PageFactory.initElements(webDriver,this); 并定义所有页面的通用方法。然后每个页面从page继承,并使用@findby注释定义相应的元素: 添加了一个新的登录

  • 问题内容: 我想创建自己的自定义注释。我的框架是独立Java应用程序。当有人注释他的pojo类时,后面的“隐藏”代码将触发方法。 例如,今天在Java EE中,我们具有注释。并且,当您使用注释类并另外实现MessageListener接口时,将触发一个背后的代码。当消息从队列/主题到达时。 如何创建批注(),可以将其添加到pojo并实现。 我希望得到的结果是(我的)“隐藏”代码的触发器,该触发器将

  • 我发现了几个与此相关的(不是重复的)问题,但它们不能让我满意。 我无法理解在哪里以及为什么要使用? 我在一本书中读到了一个自定义注释的示例,但没有详细解释。 myMeth()内的输出与预期一致。 关于这个例子,我有几个问题。 1-如何在此程序中使用和?或