0

我如何更有效地将这两种方法合二为一?

它们具有相同的结构但不同的参数('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]
4

3 回答 3

3

将存储组合到您自己的类中的字典中可能更容易......

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]
于 2016-01-19T08:12:43.033 回答
1

你可以试试:

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]
于 2016-01-19T07:46:39.880 回答
1

也许(未经测试)

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])
于 2016-01-19T08:02:17.473 回答