所以,我试图让这段代码以更干净的方式工作,主要是通过使用 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]