如何在Python中获取对象的属性。

17 浏览
0 Comments

如何在Python中获取对象的属性。

这个问题已经有了答案

是否有内置函数打印对象的所有属性和值?

class ClassB:
    def __init__(self):
        self.b = "b"
        self.__b = "__b"
    @property
    def propertyB(self):
        return "B"

我知道 getattr, hasattr... 可以访问属性。

但为什么没有 iterattrlistattr

期望结果为 ClassB 对象:

{'propertyB': 'B'}

期望结果为 ClassB 类:

['propertyB']

感谢 @juanpa.arrivillaga 的评论。

vars(obj)vars(obj.__class__) 是不同的!

admin 更改状态以发布 2023年5月20日
0
0 Comments

要列出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/

0
0 Comments

使用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']

0