慕慕森

说一下self究竟是什么.

写这个的时候也没查阅文档,有些说法可能不是很准确.

类方法的第一个参数self是实例本身,也就是A=X()这个A.

In [1]: class A(object):

...: def get_self(self):

...: return self

...:

In [2]: instance = A()

In [3]: instance.get_self() == instance

Out[3]: True

这个还是很清楚的,我们确定了这个之后,再转头去看你举的例子.我们都知道,子类的方法会覆盖父类的同名方法.先看下边的例子:

class A(object):

def a(self):

pass

def b(self):

pass

class B(A):

def b(self):

pass

def __init__(self):

print super(B,self).a == self.a //True

print super(B,self).b == self.b //False

def main():

B()

if __name__ == '__main__':

main()

我们看到,在子类没有覆盖父类的方法时,子类的方法是等于父类的方法的,很纯粹的等于,内存中地址都是一样的.所以你那个例子中super().f()就和直接f()没区别的.同样,在子类的实例里也不会莫名其妙冒出来一个父类的实例作为self参数传给f()方法,而且,你子类的init方法覆盖了父类的init方法,所以父类的init方法根本就没有执行.从那个角度来说,都是万万不会等于父类初始化的值的.

python调用实例做父类_Python super() 调用父类方法, 但是父类中 self 并不是父类的实例而是子类的实例?...相关推荐

  1. python怎么做项目_听说你没有python项目可做,我教你个方法

    原标题:听说你没有python项目可做,我教你个方法 学习了一段时间的Python,最近出现了"饥荒",感觉需要多看些代码,多学习学习别人做些什么,但却不知道做点什么来进行练习. ...

  2. python新式类c3算法_Python新式类的方法解析顺序MRO与Super

    新式类与经典类的方法解析顺序 MOR(方法解析顺序) 经典类:深度优先 DFS python3以前 新式类:广度优先 python2.2 新式类:广度优先的C3算法实现(拓扑排序) BFS pytho ...

  3. python类是实例的工厂_Python设计模式之工厂方法模式实例详解

    本文实例讲述了Python设计模式之工厂方法模式.分享给大家供大家参考,具体如下: 工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定实例化哪一个类, ...

  4. pythonsuper用法_python super函数使用方法详解

    一.super函数简介 python内置函数super()主要用于类的多继承中,用来查找并调用父类的方法,所以在单重继承中用不用 super 都没关系:但是,使用 super() 是一个好的习惯.一般 ...

  5. python私有变量什么意思_python为什么有私有方法和变量

    1. 访问安全,其实也没有决定的安全 >>> class humer(object): ... def __init__(self, name): ... self.name = n ...

  6. python tkinter库函数详解_Python使用tkinter库进行GUI编程中常用事件处理方式汇总

    在Python GUI编程中,控件响应事件处理是常用的操作.tkinter库中事件类型有哪些?事件绑定方式有几种?如何编写事件处理函数?这些都是必须要面对的问题.今天,我们对上述内容进行简要汇总. 事 ...

  7. 用python的tkinter做游戏(八)—— 实现图片在tkinter中自适应大小(自动匹配窗口)

    用python的tkinter做游戏 系列: 用python自带的tkinter做游戏(一)-- 贪吃蛇 篇 用python自带的tkinter做游戏(二)-- 俄罗斯方块 篇 用python自带的t ...

  8. [转载] python cmp函数比较字典_Python 字典(Dictionary) cmp()方法

    参考链接: Python cmp方法 Python 字典(Dictionary) cmp()方法 描述 Python 字典(Dictionary) cmp() 函数比较两个字典元素. 语法 cmp() ...

  9. python编译成c代码_python如何调用c编译好可执行程序

    以下总结出几种在Python 中调用 C/C++ 代码的方法 -------------------------------------------------------------------- ...

最新文章

  1. feed流和瀑布流_产品PM必备的Feed流和瀑布流应用场景
  2. 模仿百度搜索框,进行联想搜索
  3. ofbiz中的数据模型
  4. Gentle中的数据表实体类相关自定义属性的设置和获得
  5. mysql事务处理什么意思_mysql事务是什么意思
  6. matlab中将小数四舍五入,matlab 四舍五入 保留至指定小数(图)
  7. C++数据结构04--顺序栈的实现
  8. [...]ubuntu rvm rails 安装完之后消失的解决方法
  9. 中国经济蓝皮书发布 该死的房价下降成定局
  10. Linux内核IP Queue机制的分析
  11. JavaEE 保存文件获取绝对路径getResource()和servletContext.getRealPath(/)
  12. 刀具寿命预测研究方法
  13. Python爬虫入门教程13:高质量电脑桌面壁纸爬取
  14. 《AMNet: Deep Atrous Multiscale Stereo Disparity Estimation Networks》
  15. CYY网页提取助手2.0绿色版正式发布
  16. tornado源码分析-Application
  17. 模拟电路1(二极管半导体知识)
  18. Mysql添加新用户设置密码
  19. python之os模块操作文件与文件夹
  20. Nexus上传jar问题【史上最全,亲测可用】

热门文章

  1. Audio strage 声音相关
  2. 自己手写一个Spring MVC框架
  3. 如何让Java应用在Aone上打包速度提高100%以上
  4. vim编辑器的快捷键使用
  5. 2分钟-实现开机nginx开机自启动脚本(shell篇)
  6. jQuery 增加 删除 修改select option
  7. Java方法区和运行时常量池溢出问题分析(转)
  8. Devexpress 15.1.8 Breaking Changes
  9. 2012《Linux杂志》读者选择奖 (Readers' Choice Awards 2012- Linux Journal)
  10. Linux文件管理和用户管理