在Python中,什么时候应该使用函数而不是方法?

在Python中,什么时候应该使用函数而不是方法?,第1张

在Python中,什么时候应该使用函数而不是方法?

我的一般规则是- 是在对象上执行 *** 作还是由对象执行 *** 作?

如果是由对象完成的,则应该是成员 *** 作。如果它也可以应用于其他事物,或者由对象的其他事物完成,那么它应该是一个函数(或其他事物的成员)。

引入编程时,传统上(尽管实现不正确)以现实世界中的对象(例如汽车)来描述对象。您提到一只鸭子,让我们开始吧。

class duck:     def __init__(self):pass    def eat(self, o): pass     def crap(self) : pass    def die(self)    ....

在“对象是真实的事物”类比的上下文中,为对象可以执行的任何 *** 作添加类方法是“正确的”。所以说我想杀死一只鸭子,是否要在鸭子上添加.kill()?不,据我所知,动物不会自杀。因此,如果我想杀死一只鸭子,我应该这样做:

def kill(o):    if isinstance(o, duck):        o.die()    elif isinstance(o, dog):        print "WHY????"        o.die()    elif isinstance(o, nyancat):        raise Exception("NYAN "*9001)    else:       print "can't kill it."

远离这种类比,为什么我们要使用方法和类?因为我们要包含数据并希望以某种方式构造我们的代码,以便将来可以重用和扩展它。这使我们想到了面向对象设计非常重要的封装概念。

封装原理实际上就是它的含义:作为设计人员,您应该隐藏有关实现和类内部的所有内容,对于任何用户或其他开发人员而言,都不一定要访问它。因为我们处理类的实例,所以这简化为“什么 *** 作对于
该实例 至关重要”。如果 *** 作不是实例特定的,则它不应是成员函数。

TL; DR :@Bryan说了什么。如果它在实例上运行并且需要访问类实例内部的数据,则它应该是成员函数。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5616655.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存