Python中调用父类的同名方法
来源:互联网 发布:淘宝关键词指数查询 编辑:程序博客网 时间:2024/05/20 11:47
Python中对象方法的定义很怪异,第一个参数一般都命名为self(相当于其它语言的this),用于传递对象本身,而在调用的时候则不必显式传递,系统会自动传递。
举一个很常见的例子:
>>> class Foo:
def bar(self, message):
print(message)
>>> Foo().bar("Hello, World.")
Hello, World.
当存在继承关系的时候,有时候需要在子类中调用父类的方法,此时最简单的方法是把对象调用转换成类调用,需要注意的是这时self参数需要显式传递,例如:
>>> class FooParent:
def bar(self, message):
print(message)
>>> class FooChild(FooParent):
def bar(self, message):
FooParent.bar(self, message)
>>> FooChild().bar("Hello, World.")
Hello, World.
这样做有一些缺点,比如说如果修改了父类名称,那么在子类中会涉及多处修改,另外,Python是允许多继承的语言,如上所示的方法在多继承时就需要重复写多次,显得累赘。为了解决这些问题,Python引入了super()机制,例子代码如下:
>>> class FooParent:
def bar(self, message):
print(message)
>>> class FooChild(FooParent):
def bar(self, message):
super(FooChild, self).bar(message)
>>> FooChild().bar("Hello, World.")
Hello, World.
表面上看 super(FooChild, self).bar(message)方法和FooParent.bar(self, message)方法的结果是一致的,实际上这两种方法的内部处理机制大大不同,在super机制里可以保证公共父类仅被执行一次,至于执行的顺序,是按照mro进行的(E.__mro__)。
- 如何在Python中调用父类的同名方法
- Python中调用父类的同名方法
- 如何在Python中调用父类的同名方法
- Python中调用父类的同名方法
- Python中调用父类的同名方法
- 在Python多继承中调用父类的同名方法
- JS中子类中如何调用父类的同名方法(继承时候,父类的同名方法被覆盖了)
- java 父类子类同名方法的调用
- java中复写方法和同名变量的调用问题
- python中通过字符串调用同名函数
- objc - Category中调回主类的同名原方法
- python 文件中定义同名的class
- JS实现子类调用父类的同名函数函数
- ruby中如何调用与局部变量同名的私有方法
- JavaScript中模拟实现类似于Java的super关键字调用父类中同名方法
- python中子类调用父类的初始化方法
- python中子类调用父类的初始化方法
- 继承中同名成员的处理方法
- 【WPF】自定义控件之依赖属性
- 什么是大数据?
- python类之间调用
- 移动应用数据统计平台(之二)
- JSP url 斜杠
- Python中调用父类的同名方法
- IndexedDB的JS接口设计详解
- 链接Cin
- res/raw和assets
- 浅析IndexedDB存数结构
- 欢迎使用“旺"框架【sourceforge】
- 移动应用数据统计平台(之一)
- ubuntu普通用户如何切换到root用户身份?
- Oracle数据库搜索工具