哪个是“更好”的做法?在Python中传递对象引用或对象方法参考
-
09-10-2019 - |
题
我正在用Python写一小部分代码,很好奇别人对此的看法。
我有几个类,每个类都有几种方法,并且正在尝试确定什么是“更好”:通过方法调用将对象传递,或者在只需要从对象的一种方法中传递方法调用。基本上,我应该这样做:
def do_something(self, x, y, manipulator):
self.my_value = manipulator.process(x, y)
或这个
def do_the_same_thing_but_differently(self, x, y, manipulation):
self.my_value = manipulation(x, y)
我的看法,第二个可以说是“更好的”,因为它可以促进操纵和另一个类之间更松散的耦合/更强的凝聚力。当对象只需要单个方法时,我很想看到对这种方法的一些论点和反对这种方法。
编辑: 我删除了OOP措辞,因为它显然令人沮丧。我主要指的是松散的耦合和高凝聚力。
解决方案
第二个解决方案可能会提供更宽松的耦合,因为它更“功能”,而不是更多的“ OOP”。第一个解决方案的优点是它在没有封闭的C ++等语言中起作用(尽管使用模板和指针到会员函数可以获得类似的效果);但是在像Python这样的语言中,恕我直言,第二个选择似乎更自然。
编辑:您会在免费书籍“高级perl”中找到“功能与对象的”技术的非常好的讨论,可在此处提供:
(查看第1章,第6部分)。尽管这是一本Perl(不是Python)的书,但那里的讨论完全适合这里所要求的问题,并且所描述的功能技术可以以类似的方式应用于Python。
不隶属于 StackOverflow