この単純なコード例では、.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")
このようなこともできますが、1 つの言語しか実行できません。
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")