栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在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说了什么。如果它在实例上运行并且需要访问类实例内部的数据,则它应该是成员函数。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/610531.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号