在模块中,如果需要,我想要求类的实例更新类属性。下面是代码示例:
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/