提供以下课程:
class Test:
def __init__(self, test_prop: str):
self.__test_prop = test_prop
@property
def test_prop(self) -> str:
return self.__test_prop
如何从类或实例中动态访问test_prop
的类型注释?
以下内容无效:
t1 = Test('a')
import inspect
inspect.signature(t1.test_prop)
# TypeError: 'a' is not a callable object
答案 0 :(得分:4)
您需要获取property
对象本身,而不进行动态查找。 inspect
模块具有功能inspect.getattr_static
。然后,我们可以使用signature
获取该对象的fget
属性的签名。这就是property
对象存储用于执行动态查找的函数的地方。
from inspect import getattr_static, signature
print(signature(getattr_static(t1, 'test_prop').fget))
# (self) -> str
属性的其他两个功能存储在属性fset
和fdel