我怎样才能获得类变量?

时间:2009-02-06 19:06:38

标签: python

我有这个类定义:

class cols:
    name = 'name'
    size = 'size'
    date = 'date'
    @classmethod
    def foo(cls):
        print "This is a class method"

使用__dict__,我获得所有类属性(成员和变量)。还有“内部属性”(如__main__)。如何在没有实例化的情况下只获取类变量?

2 个答案:

答案 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