如何*仅*打印类共享变量?

2024-10-01 04:55:24 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑下面的代码:

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中只打印类共享变量的最佳方法是什么?

我想指出的是,这里提供的答案:How can I get only class variables?并不能让我满意,它甚至比我的解决方案更粗糙


Tags: 方法答案代码内容objectpassdictclass
1条回答
网友
1楼 · 发布于 2024-10-01 04:55:24

可以使用以下代码打印非私有(不以下划线开头)且值不是类方法类型的类属性

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

相关问题 更多 >