【发布时间】:2020-01-30 07:13:44
【问题描述】:
class ClassB:
def __init__(self):
self.b = "b"
self.__b = "__b"
@property
def propertyB(self):
return "B"
我知道getattr,hasattr... 可以访问该属性。
但是为什么没有iterattr 或listattr?
ClassB 对象的预期结果:
{'propertyB': 'B'}
ClassB 类的预期结果:
['propertyB']
感谢@juanpa.arrivillaga 的评论。
vars(obj) 和 vars(obj.__class__) 不一样!
【问题讨论】:
-
要获取对象的属性,请使用
vars(obj)。注意,property对象属于 class 而不是 instance -
请注意,您的
property不知道它会始终返回B。 -
@juanpa.arrivillaga 如果我知道房产名称,我可以通过
getattr获取值 -
如果您的财产返回
random.random(),该怎么办? -
@juanpa.arrivillaga 在这种情况下,我认为该值应与
getattr(b_object, 'randomProperty')相同。
标签: python python-3.x reflection