您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

在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."

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

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

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

python 2022/1/1 18:45:31 有308人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶