考虑以下代码:
class Dummy(object):
SHARED_0 = '0'
SHARED_1 = '1'
printOnlySharedVariablesValues(Dummy)
我想打印的是:
{'0', '1'}
我试着:
class Pass(object):
pass
set(Dummy.__dict__) - set(Pass.__dict__)
收益率:
set(['SHARED_0', 'SHARED_1'])
不要紧。通过这些键,我可以得到值。然而,我认为这有点粗俗,不优雅。
我的问题是:在Python中只打印类共享变量的最好方法是什么?我想指出,这里提供的回答:我怎样才能只类变量?不满足我,它甚至比我的解决方案更糟糕。
您可以使用以下代码打印非私有(不以下划线开头)且值不是类方法类型的类属性。
class Dummy(object):
SHARED_0 = '0'
SHARED_1 = '1'
print({v for k, v in Dummy.__dict__.items() if not k.startswith("_") and not isinstance(v, classmethod)})
or
print({v for k, v in vars(Dummy).items() if not k.startswith("_") and not isinstance(v, classmethod)})
输出{'0', '1'}
通过遍历类__dict__
或类vars()
中的项。