如何"只"打印类共享变量?



考虑以下代码:

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()中的项。

最新更新