有没有通过类名和实例获取类属性的通用方法?
class A:
def __init__(self):
self.prop = 1
a = A()
for attr, value in a.__dict__.items():
print(attr, value) # prop, 1
class A:
def __init__(self):
self.prop = 1
for attr, value in A.__dict__.items():
print(attr, value)
#__dict__, __doc__, __init__, __module__, __weakref__
为什么最后一个示例返回dir
attibutes结果不同的原因?
答案 0 :(得分:1)
__dict__, __doc__, __module__, ...
实际上存在于一个类中,即使您尚未创建它们。它们是“内置的”。
因此dir
向您展示它们是正常的。
__dict__
属性存储实例属性。
class A:
def __init__(self):
self.prop = 1
a = A()
for attr, value in a.__dict__.items():
print(attr, value)
这显示了实例属性。并且只有一个实例属性 - prop
(self.prop = 1
)
for attr, value in A.__dict__.items():
这会获得类属性。 prop
已添加到实例中,因此不在此处。
请参阅http://docs.python.org/library/stdtypes.html#special-attributes
要从对象获取所有属性,包括类属性,基类属性,请使用inspect.getmembers