方法胜于python中的函数

时间:2018-10-25 13:09:12

标签: python

我有一些R方面的经验,最近我开始学习一些python。我知道python中的方法和函数以及如何在对象上调用它们之间存在一些差异,但是我看不到在python中一般使用方法的好处。

对我来说,使用方法只会增加另一种混乱,因为在R中,我可以仅通过使用函数来完美地编写所有代码。但是现在,在python中,在对象上应用方法的语法有所不同,某些方法会更改调用它们的对象,而某些方法仅适用于某些特殊的对象类。

所以,请原谅我问:有人开发方法只是为了使一切变得更加复杂,还是有人开发方法?

1 个答案:

答案 0 :(得分:2)

我也认为这是基于我的理解而提出的(如果愿意,我很乐意删除我的答案),但是我确实相信他们每个人都有自己的位置。 Judging solely by the merits of their differences,方法在类的外部不存在,因此它们特定于类本身。

考虑此类Person

Class Person():
    # ...
    def eat(self, food):
        return self.poop(food)

然后您可以调用john.eat(burger),对于任何新手来说,维护新代码库都是完全可读的代码。但是功能eat(john, burger)可能更像是一个大脑屁,因为现在您需要辨别哪个对象正在执行eat()函数,哪个对象正在返回poop()。这可能会提示您不必要地窥视eat()定义。另外,eat()Food类的上下文中没有意义,因此它实际上并不需要是所有对象都可以访问的函数。因此,您可以在这方面进行范围界定。

也就是说,更通用的功能(例如type()id()可能更有意义地存在于类之外,因为它们可以应用于广泛的类,并成为DRY的良好实践在定义上。

总而言之,这很大程度上取决于您的代码结构。因此,恕我直言,每次使用都是自觉的。