我有一个长长的 if-elif 链,就像这样:
class MyClass:
def my_func(self, item, value):
if item == "this":
self.do_this(value)
elif item == "that":
self.do_that(value)
# and so on
我发现那难以阅读,因此我更喜欢使用词典:
class MyClass:
def my_func(self, item, value):
do_map = {
"this" : self.do_this,
"that" : self.do_that,
# and so on
}
if item in do_map:
do_map[item](value)
每次调用函数重新创建字典是很愚蠢的。我该如何重构这个类,以便字典只创建一次,适用于所有实例?我能否将do_map
转换为类成员,但仍然映射到实例方法?
if item in do_map:
中访问do_map
的?难道不应该是self.do_map
吗? - TheRealFakeNews