Python 如何仅获取类变量?

Python 如何仅获取类变量?,python,Python,我有这样一个类定义: class cols: name = 'name' size = 'size' date = 'date' @classmethod def foo(cls): print "This is a class method" 通过dict,我得到了所有的类属性(成员和变量)。此外还有“内部属性”(如_umain__;)。如何在没有实例化的情况下只获取类变量 import inspect inspect.getmembe

我有这样一个类定义:

class cols:
    name = 'name'
    size = 'size'
    date = 'date'
    @classmethod
    def foo(cls):
        print "This is a class method"
通过dict,我得到了所有的类属性(成员和变量)。此外还有“内部属性”(如_umain__;)。如何在没有实例化的情况下只获取类变量

import inspect
inspect.getmembers(cols)

使用inspect模块可以做很多事情:

我不知道一个简单的方法,特别是从解释器的角度来看,类的方法和任何其他变量之间没有太大的区别(方法有描述符,但仅此而已…)

因此,当您只需要不可调用的类成员时,您必须稍微调整一下:

>>> 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']

inspect.getmembers只返回dir()返回的内容,而不是OP要求的内容。