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

为什么从类内部访问类变量需要“自我”。在Python中?

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

为什么从类内部访问类变量需要“自我”。在Python中?

摘自Python历史:添加对用户定义类的支持:

相反,我决定放弃隐式引用实例变量的想法。诸如C ++之类的语言使您可以编写this->
foo来显式引用实例变量foo(以防存在单独的局部变量foo)。因此,我决定将此类显式引用作为引用实例变量的唯一方法。另外,我决定将当前对象(“
this”)作为一个特殊的关键字,而不是简单地将“ this”(或其等效)作为第一个命名参数。实例变量总是总是被引用为该参数的属性。

使用显式引用,不需要为方法定义使用特殊的语法,也不必担心与变量查找有关的复杂语义。取而代之的是,仅定义一个函数,该函数的第一个参数与实例相对应,按照惯例,该实例称为“
self”。例如:

def spam(self,y):    print self.x, y

这种方法类似于我在Modula-3中看到的方法,该方法已经为我提供了导入和异常处理的语法。Modula-3没有类,但是它允许您创建包含完全类型化函数指针成员的记录类型,这些成员默认情况下初始化为附近定义的函数,并添加语法糖,以便如果x是这样的记录变量,而m是一个该记录的函数指针成员,初始化为函数f,然后调用xm(args)等效于调用f(x,args)。这与对象和方法的典型实现相匹配,并使得可以将实例变量与第一个参数的属性等同起来。

因此,由BDFL自己说,他决定使用显式自我而不是隐式自我的唯一真实原因是:

  • 这是明确的
  • 由于查找必须在运行时完成(而不是像其他语言一样在编译时进行),并且具有隐式自身,可能会增加查找的复杂性(并因此增加成本),因此它更易于实现。

编辑:Python FAQ中也有一个答案。



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

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

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