如何列出所有类属性

tef*_*ozi 22 python serialization properties

我有类SomeClass属性.例如idname:

class SomeClass(object):
    def __init__(self):
        self.__id = None
        self.__name = None

    def get_id(self):
        return self.__id

    def set_id(self, value):
        self.__id = value

    def get_name(self):
        return self.__name

    def set_name(self, value):
        self.__name = value

    id = property(get_id, set_id)
    name = property(get_name, set_name)
Run Code Online (Sandbox Code Playgroud)

列出属性的最简单方法是什么?我需要这个序列化.

Mar*_*ddy 37

property_names=[p for p in dir(SomeClass) if isinstance(getattr(SomeClass,p),property)]
Run Code Online (Sandbox Code Playgroud)


Ale*_*lli 25

import inspect

def isprop(v):
  return isinstance(v, property)

propnames = [name for (name, value) in inspect.getmembers(SomeClass, isprop)]
Run Code Online (Sandbox Code Playgroud)

inspect.getmembers获取继承的成员(并通过谓词选择成员,这里我们编码isprop因为它不在模块中的许多预定义的成员之间inspect; lambda当然,如果您愿意,也可以使用a ).