获取类属性引用列表python

时间:2021-02-11 02:15:02

标签: python pointers python-decorators

是否可以使用 python 对象获取对象引用列表? 我正在尝试获取对象属性引用列表,以便执行类似于以下示例的操作:

class Test:
def __init__(self):
    self._foo = 1
    self._bar = 2

@property
def foo(self):
    return self._foo

@foo.setter
def foo_setter(self, foo):
    self._foo = foo

@property
def bar(self):
    return self._bar

@bar.setter
def bar_setter(self, bar):
    self._bar = bar

def att_list(self):
    return [
        self.bar_setter,
        self.foo_setter
    ]

def __repr__(self) -> str:
    return f'foo: {self._foo}, bar: {self._bar}'

test = Test()
att_list = test.att_list()
print(test)
for att in att_list:
    if att > 1:
        att += 1

print(test)

理想情况下,此测试将打印出来:

foo: 1, bar: 2
foo: 1, bar: 3

如您所见,我想获取对对象属性(在本例中为 foo 和 bar)的引用列表,以便不仅能够读取它们,还能够写入它们,到目前为止我已经尝试过传递属性的 setter 函数,但这只返回值。

1 个答案:

答案 0 :(得分:-1)

要从类中提取所有属性和方法,您通常使用内置的 dir() 函数。然后,您可以根据您的特定用例将其过滤到某些标准。例如:

class A:
    x = 7

attrs = [attr for attr in dir(A) if not attr.startswith('__')] #Filtering out hidden. 
相关问题