Python:动态访问属性的类型注释

时间:2018-12-27 18:40:33

标签: python

提供以下课程:

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

1 个答案:

答案 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

属性的其他两个功能存储在属性fsetfdel