我想知道在尊重继承的情况下,是否可以在类中获取静态变量的列表。在
我有一个代码片段,它返回一个类中所有静态变量的键值字典:
dict = {attr: Class.__dict__[attr] for attr in Class.__dict__ if not callable(getattr(Class, attr)) and not attr.startswith('__')}
问题是它只返回特定类中声明的静态变量,而不是从其父类继承的静态变量。例如:class Class():
var1 = 1
def __init__(self):
pass
class SubClass(Class):
var2 = 2
def __init__(self):
super().__init__()
if __name__ == '__main__':
dict1 = {attr: Class.__dict__[attr] for attr in Class.__dict__ if not callable(getattr(Class, attr)) and not attr.startswith('__')}
dict2 = {attr: SubClass.__dict__[attr] for attr in SubClass.__dict__ if not callable(getattr(SubClass, attr)) and not attr.startswith('__')}
print(dict1)
print(dict2)
print('Class: var1 = {}'.format(Class.var1))
print('SubClass: var1 = {}, var2 = {}'.format(SubClass.var1, SubClass.var2))
退货
^{pr2}$
我正在考虑获取基类的字典并将其与子类的字典连接起来,但是我不确定我可能需要多少级别的继承,我宁愿避免不必要的麻烦。在
除了我上面建议的方法之外,有没有其他方法可以获得一个类中所有静态变量的键值字典,包括继承的那些静态变量?在