2024-04-26 02:44:34 发布
网友
问题是这样:
class A(): def foo() -> B: pass class B(): def bar() -> A: pass
这将引发名称错误:未定义名称“B”。
因此,为了检查类型,我不愿意将->;B更改为->;“B”。那有什么办法吗?
为了进一步讨论,我真的看不到注释中的任何点,如“def foo(a:'x',b:5+6,c:list)->;max(2,9):(在PEP 3107中)。为什么python会威胁这些注释来表达?
好吧,没有办法直接使用注释语法来实现,但是可以修改函数对象的__annotations__字典。在
__annotations__
class A(): def foo(): pass class B(): def bar() -> A: pass A.foo.__annotations__["return"] = B
我找到了一个解决方法,它非常类似于c/c++
在Pycharm 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()
好吧,没有办法直接使用注释语法来实现,但是可以修改函数对象的
__annotations__
字典。在我找到了一个解决方法,它非常类似于c/c++
在Pycharm 3中测试
相关问题 更多 >
编程相关推荐