gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:40:14 26 4
gpt4 key购买 nike

给定以下类:

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

最佳答案

您需要获取 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

关于Python:动态访问属性的类型注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53949473/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com