通常情况下,我有可能的行动,我需要选择不同的方式来做到这一点。请注意,在对象的生命周期中,我只需要运行一次该方法。
一种方法可以是:
class A(object):
def my_fun(self, identifier, *args, **kwargs):
if identifier == 'fun1':
return self.fun1(*args, **kwargs)
elif identifier == 'fun2':
return self.fun2(*args, **kwargs)
...
def fun1(...):
...
def fun2(...):
...
我认为更好的另一种方法是直接设置方法:
class A(object):
def my_fun(self, identifier, *args, **kwargs):
raise NotImplementedError()
def fun1(...):
...
def fun2(...):
...
a = A()
a.my_fun = fun23
我认为它更好,因为有更少的样板代码,添加乐趣只是实现它,而不是在my_fun中添加它。在选择功能时,我也可以有适当的自动完成功能。
但是,我还没有在其他python代码中看到过这种方式。这是好习惯吗?这样做还有其他建议吗?