组合具有相同结构但不同参数的方法
Combine methods with identical structure but different parameters
如何更有效地将这两种方法合二为一?
它们具有相同的结构但不同的参数('key_A'、'key_B')和不同的存储变量(self.storage_a、self.storage_b)
我可以使 key_X 成为通用方法的输入,但是在已经传递 self 时传递 self.storage_X 似乎很俗气。
def method_a(self):
some_list = list(irrelevant_extraction_function('key_A', self.some_dict))
self.storage_a = [item['address'] for item in some_list]
def method_b(self):
some_list = list(irrelevant_extraction_function('key_B', self.some_dict))
self.storage_b = [item['address'] for item in some_list]
你可以试试:
def combined_meethod(self, key):
some_list = list(irrelevant_extraction_function(key, self.some_dict))
if key == "key_A":
self.storage_a = [item['address'] for item in some_list]
elif key == "key_B":
self.storage_b = [item['address'] for item in some_list]
可能(未测试)
def method(self, key):
some_list = list(irrelevant_extraction_function(key, self.some_dict))
setattr(self, 'storage_{}'.format(key.lower()[-1], [item['address'] for item in some_list])
将存储合并到您自己的字典中可能更容易 class ...
self.storage = {'key_A':[], 'key_B':[]}
然后,使用一个函数...
def method(self, key):
some_list = list(irrelevant_extraction_function(key, self.some_dict))
self.storage[key] = [item['address'] for item in some_list]
如何更有效地将这两种方法合二为一?
它们具有相同的结构但不同的参数('key_A'、'key_B')和不同的存储变量(self.storage_a、self.storage_b)
我可以使 key_X 成为通用方法的输入,但是在已经传递 self 时传递 self.storage_X 似乎很俗气。
def method_a(self):
some_list = list(irrelevant_extraction_function('key_A', self.some_dict))
self.storage_a = [item['address'] for item in some_list]
def method_b(self):
some_list = list(irrelevant_extraction_function('key_B', self.some_dict))
self.storage_b = [item['address'] for item in some_list]
你可以试试:
def combined_meethod(self, key):
some_list = list(irrelevant_extraction_function(key, self.some_dict))
if key == "key_A":
self.storage_a = [item['address'] for item in some_list]
elif key == "key_B":
self.storage_b = [item['address'] for item in some_list]
可能(未测试)
def method(self, key):
some_list = list(irrelevant_extraction_function(key, self.some_dict))
setattr(self, 'storage_{}'.format(key.lower()[-1], [item['address'] for item in some_list])
将存储合并到您自己的字典中可能更容易 class ...
self.storage = {'key_A':[], 'key_B':[]}
然后,使用一个函数...
def method(self, key):
some_list = list(irrelevant_extraction_function(key, self.some_dict))
self.storage[key] = [item['address'] for item in some_list]