【问题标题】:How to list all class properties如何列出所有类属性
【发布时间】:2010-11-15 23:16:29
【问题描述】:

我有类 SomeClass 与属性。例如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)

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

【问题讨论】:

标签: python serialization properties


【解决方案1】:
property_names=[p for p in dir(SomeClass) if isinstance(getattr(SomeClass,p),property)]

【讨论】:

  • 唉,这将错过继承的属性...!
  • 我已经尝试过了,它也适用于继承的类。
【解决方案2】:
import inspect

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

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

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

【讨论】:

    猜你喜欢
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    相关资源
    最近更新 更多