python - 使用一个函数更新不同的类属性

标签 python python-3.x class parameters

在模块中,如果需要,我想要求类的实例更新类属性。下面是代码示例:

class ExampleClass:

    def __init__(self):
        self.data1 = None
        self.data2 = None
        self.data3 = None

    def updateData1(self, withInfo):
        self.dataUpdater(self.data1, withInfo)

    def updateData2(self, withInfo):
        self.dataUpdater(self.data2, withInfo)

    def updateData3(self, withInfo):
        self.dataUpdater(self.data3, withInfo)

    def dataUpdater(self, data, withInfo):
        # Very long and complex class function.
        # I would like to keep this logic in one function instead of making copies of it.
        data = 'new data'

但是当该数据更新并且我尝试在另一个模块中获取该特定数据时,它仍然是“无”。现在我明白发生了什么事。我基本上是在 dataUpdater 中重写并创建一个名为 data 的新变量。我的特定类属性永远不会被更新。我的问题是如何更新我传入的数据(特定的类属性)?

我花了半天时间试图解决这个问题,但我似乎找不到任何像我正在尝试的东西。

最佳答案

您可以尝试使用 setattr 设置要更新的属性。即

类示例类:

def __init__(self):
    self.data1 = None
    self.data2 = None
    self.data3 = None

def updateData1(self, withInfo):
    self.dataUpdater('data1', withInfo)

def updateData2(self, withInfo):
    self.dataUpdater('data2', withInfo)

def updateData3(self, withInfo):
    self.dataUpdater('data3', withInfo)

def dataUpdater(self, attr_name, withInfo):
    # Very long and complex class function.
    # I would like to keep this logic in one function instead of making copies of it.
    setattr(self, attr_name, 'new_data')

关于python - 使用一个函数更新不同的类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51845791/

相关文章:

javascript - 如何使用方法创建自定义类

Javascript 重写父类函数在子类最佳实践中

python - 如何在python中定义归因的归属

python - 在数据库中查找 'representative'组数据

python - Matplotlib 2.2.2 无法 xkcdify 绘图

python - 将附件添加到电子邮件消息会引发 TypeError : set_text_content() got an unexpected keyword argument 'maintype'

Python通过导入根包引用子模块

reactjs - 将 react-charts 功能组件示例转换为类组件

python - 通过 Web API 设置 Hudson 构建描述

Python numpy float16 数据类型操作,和 float8?