如何在Python中获取对象的属性。
如何在Python中获取对象的属性。
这个问题已经有了答案:
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__)
是不同的!
admin 更改状态以发布 2023年5月20日
要列出Python类的属性,您可以使用 __dict__
例如
>>> class C(object): x = 4 >>> c = C() >>> c.y = 5 >>> c.__dict__ {'y': 5}
有关更多示例和信息,请参见此链接 - https://codesachin.wordpress.com/2016/06/09/the-magic-behind-attribute-access-in-python/
使用Python内置的vars
函数,如下所示:
properties = [] for k,v in vars(ClassB).items(): if type(v) is property: properties.append(k)
使用列表推导式:
>>> [k for k,v in vars(ClassB).items() if type(v) is property] ['propertyB']