所以,我主要是通过使用for循环来使此代码以更简洁的方式工作,但这样做确实很困难。我还无法创建一个将字典的每个值分配给对应变量的循环,因此可以在类中使用它。对于上下文,字典包含从另一个类获得的值,我只需将其放入dict中并将其发送给此类,因此无需再次计算。
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")
答案 0 :(得分:0)
您可以使用setattr函数
for name in ["pb", "rs", "bo", "uo", "re", "j_index", "q_max", "pws", "qb"]:
setattr(self, name, self.reservoir_result_dict.get(name))
setattr的文档: https://docs.python.org/3/library/functions.html#setattr
答案 1 :(得分:0)
通过定义__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]