组合具有相同结构但不同参数的方法

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]