如何通过 for 循环制作此代码体?



所以,我试图让这段代码以更干净的方式工作,主要是通过使用 for 循环,但很难尝试这样做。我无法创建一个循环,将字典的每个值分配给一个相应的变量,因此它可以在类中使用。对于上下文,字典包含从另一个类获得的值,我只是将它们放在字典中并将其发送到该类,所以我不需要再次计算这些值。

def get_ipr_data(self):
self.reservoir_result_dict = ReservoirDataFrame.reservoir_result_dict
self.pb = self.reservoir_result_dict.get("pb")
self.rs = self.reservoir_result_dict.get("rs")
self.bo = self.reservoir_result_dict.get("bo")
self.uo = self.reservoir_result_dict.get("uo")
self.re = self.reservoir_result_dict.get("re")
self.j_index = self.reservoir_result_dict.get("j_index")
self.q_max = self.reservoir_result_dict.get("q_max")
self.pws = self.reservoir_result_dict.get("pws")
self.qb = self.reservoir_result_dict.get("qb")

您可以使用setattr函数

for name in ["pb", "rs", "bo", "uo", "re", "j_index", "q_max", "pws", "qb"]:
setattr(self, name, self.reservoir_result_dict.get(name))

目录文档: https://docs.python.org/3/library/functions.html#setattr

委派属性是通过定义__getattr__方法来完成的。您应该只存储字典,然后定义__getattr__

class Foo:
...
def get_ipr_data(self):
self.reservoir_result_dict = ReservoirDataFrame.reservoir_result_dict
def __getattr__(self, item):
return self.reservoir_result_dict[item]

相关内容

最新更新