python super超类方法
2024-10-15 06:49:36
super() 函数是用于调用父类(超类)的一个方法。
super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。
MRO 就是类的方法解析顺序表, 其实也就是继承父类方法时的顺序表。
语法
以下是 super() 方法的语法:
super(type[, object-or-type])
参数
type -- 类。
object-or-type -- 类,一般是 self
Python3.x 和 Python2.x 的一个区别是: Python 3 可以使用直接使用 super().xxx 代替 super(Class, self).xxx :
Python3.x 实例:
class A:
pass
class B(A):
def add(self, x):
super().add(x)
Python2.x 实例:
class A(object): # Python2.x 记得继承 object
pass
class B(A):
def add(self, x):
super(B, self).add(x)
返回值
无。 实例
以下展示了使用 super 函数的实例:
#!/usr/bin/python
# -*- coding: UTF-8 -*- class FooParent(object):
def __init__(self):
self.parent = 'I\'m the parent.'
print ('Parent') def bar(self,message):
print ("%s from Parent" % message) class FooChild(FooParent):
def __init__(self):
# super(FooChild,self) 首先找到 FooChild 的父类(就是类 FooParent),然后把类B的对象 FooChild 转换为类 FooParent 的对象
super(FooChild,self).__init__()
print ('Child') def bar(self,message):
super(FooChild, self).bar(message)
print ('Child bar fuction')
print (self.parent) if __name__ == '__main__':
fooChild = FooChild()
fooChild.bar('HelloWorld')
执行结果:
Parent
Child
HelloWorld from Parent
Child bar fuction
I'm the parent.
最新文章
- Nginx做前端Proxy时TIME_WAIT过多的问题
- 写给IOS开发工程师的网页前端入门笔记
- emacs下安装pip
- sdut 2162:The Android University ACM Team Selection Contest(第二届山东省省赛原题,模拟题)
- Spring的2个思想
- zzuli oj 1146 吃糖果
- capitalize()在Python中含义
- 部署在腾讯云的公益网站遭受了一次CC攻击
- css3制作导航栏
- 360浏览器和猎豹浏览器重定向后丢失get参数
- STL(标准模板库) 中栈(stack)的使用方法
- 洛谷 P1028 数的计算【递推】
- Jmeter接口测试实战-数据传递
- I2C(二) linux2.6
- Mysql基本查询、视图、索引、触发器
- java ee wildfly spring 在线程池的线程中注入
- MySQL server has gone away
- POJ3461 Oulipo 字符串
- 多行文字溢出[...]的实现(text-overflow: ellipsis)
- University Entrace Examination zoj1023