【问题标题】:Get list of class attribute references python获取类属性引用列表python
【发布时间】:2021-02-11 02:15:02
【问题描述】:

是否可以使用 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 函数,但这只会返回值。

【问题讨论】:

    标签: python pointers python-decorators


    【解决方案1】:

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

    class A:
        x = 7
    
    attrs = [attr for attr in dir(A) if not attr.startswith('__')] #Filtering out hidden. 
    

    【讨论】:

      猜你喜欢
      • 2021-03-26
      • 2019-01-12
      • 2013-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 2018-01-21
      • 2010-10-18
      相关资源
      最近更新 更多