在这个幼稚的代码示例中,我遇到的问题是,每次调用 .do() 时,都需要处理一个条件列表,以使类按预期运行。这不是很有效,我很确定还有另一种方法,但我不能指望它。
我可以采取什么方法使这个类的行为更加相同,但以更有效的方式?
class translate():
def __init__(self, EN=True, FR=False, DE=False, SP=False):
self.EN=EN
self.FR=FR
self.DE=DE
self.SP=SP
def do(self, word):
if self.EN:
self.en(word)
if self.FR:
self.fr(word)
if self.DE:
self.de(word)
if self.SP:
self.sp(word)
def en(self, word):
print "In English: %s"%(word)
def fr(self, word):
print "In French: %s"%(word)
def de(self, word):
print "In German: %s"%(word)
def sp(self, word):
print "In Spanish: %s"%(word)
tr=translate(FR=True)
tr.do("blah")
我可以这样做,但我只能做一种语言:
class translate():
def __init__(self, EN=False, FR=False, DE=False, SP=False):
if EN:
self.do=self.en
elif FR:
self.do=self.fr
elif DE:
self.do=self.de
elif SP:
self.do=self.sp
else:
self.do=self.unkown
def en(self, word):
print "In English: %s"%(word)
def fr(self, word):
print "In French: %s"%(word)
def de(self, word):
print "In German: %s"%(word)
def sp(self, word):
print "In Spanish: %s"%(word)
def unknown(self, word):
print "Unknown: %s"%(word)
tr=translate(FR=True)
tr.do("blah")