我有这个类定义:
class cols:
name = 'name'
size = 'size'
date = 'date'
@classmethod
def foo(cls):
print "This is a class method"
使用__dict__,我获得所有类属性(成员和变量)。还有“内部属性”(如__main__)。如何在没有实例化的情况下只获取类变量?
答案 0 :(得分:5)
我不会知道一种简单的方法,特别是因为从解释器的POV开始,类的方法和任何其他变量之间没有太大的区别(方法有描述符,但就是它......)。
所以当你只想要不可调用的类成员时,你必须摆弄一下:
>>> class cols:
... name = "name"
... @classmethod
... def foo(cls): pass
>>> import inspect
>>> def get_vars(cls):
... return [name for name, obj in cls.__dict__.iteritems()
if not name.startswith("__") and not inspect.isroutine(obj)]
>>> get_vars(cols)
['name']
答案 1 :(得分:1)
import inspect
inspect.getmembers(cols)
如果您可以使用检查模块执行的操作有很多:http://lfw.org/python/inspect.html