Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何列出所有类属性_Python_Serialization_Properties - Fatal编程技术网

Python 如何列出所有类属性

Python 如何列出所有类属性,python,serialization,properties,Python,Serialization,Properties,我有一个带有属性的类。例如id和name: 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)

我有一个带有属性的类。例如
id
name

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)
列出属性的最简单方法是什么?我需要这个来序列化

property_names=[p for p in dir(SomeClass) if isinstance(getattr(SomeClass,p),property)]

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

唉,这将丢失继承的属性。。。!我已经尝试过这个方法,它也适用于继承类。相关:
import inspect

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

propnames = [name for (name, value) in inspect.getmembers(SomeClass, isprop)]