Является ли это пифонической реализацией?Pythonic? ... Динамически вызывать вложенные функции
Я вызываю вложенные функции динамически из строкового аргумента с помощью оберток, чтобы уменьшить вероятность вызова несуществующей функции. Вот пример, где я хочу, чтобы выполнять различные сравнения на arg1 и arg2 (с точки зрения ==,> =, < и т.д.) ...
class ComparisonClass(object):
def__init__(self):
pass
def comparison(self,arg1,arg2,comparison):
def equal_to():
pass
def greater_than():
pass
def less_than():
pass
return locals()[comparison]()
def comparison_equal_to(self,arg1,arg2):
return self.comparison(arg1,arg2,'equal_to')
def comparison_greater_than(self,arg1,arg2):
return self.comparison(arg1,arg2,'greater_than')
def comparison_less_than(self,arg1,arg2):
return self.comparison(arg1,arg2,'less_than')
Спасибо за ваш ответ! Я довольно новичок в Python и не знаком с семьей __eq__. Естественно, я буду искать документацию, но могли бы вы дать мне краткое объяснение, что это такое? Это может также помочь, если я добавлю, что сравнение намного больше (т. Е. More_than() включает в себя больше, чем запрос «arg1> arg2»), но я просто пропустил это для простоты. Наверное, я действительно не должен был указывать сравнения и просто спросил, была ли это пифоническая реализация динамических вызовов вложенных функций? Извиняюсь, если я пропущу точку в любом месте! – burn5
В основном я испытываю трудности с выяснением того, что вы чувствуете в фразе «динамически вызывающие вложенные функции». Насколько я понимаю, ответ Даниила более чем достаточен. Для '__eq__' и. al., см. документацию: http://docs.python.org/reference/datamodel.html#object.__lt__ –