Python语言基础
Python语言进阶
Python数据结构

Python super()函数

搞懂Python super()函数的用法
Python 内置函数

描述

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 :
     def add(self, x):
         y = x+1
         print(y)
class B(A):
    def add(self, x):
        super().add(x)
b = B()
b.add(2) # 3
class A(object): # Python2.x 记得继承 object
    def add(self, x):
         y = x+1
         print(y)
class B(A):
    def add(self, x):
        super(B, self).add(x)
b = B()
b.add(2) # 3

返回值

无。

实例

以下展示了使用 super 函数的实例:
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),然后把类 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.

Python 内置函数更多方法说明

Python 内置函数
abs()
返回数的绝对值
acos(x)
返回x的反余弦弧度值。
all()
判断所有项是否为true
any()
判断任何项是否有true
ascii()
返回对象的可读版本
asin(x)
返回x的反正弦弧度值。
atan(x)
返回x的反正切弧度值。
atan2(y, x)
返回坐标值的反正切值
bin()
返回数的二进制版本
bool()
返回指定对象的布尔值
bytearray()
返回字节数组
bytes()
返回字节对象
callable()
如果指定的对象是可调用的
ceil(x)
返回数字的上入整数
cos(x)
返回x的弧度的余弦值。
chr()
返回Unicode代码中的字符。
choice(seq)
随机挑选一个元素。
classmethod()
把方法转换为类方法
compile()
把指定的源作为对象返回
complex()
返回复数
degrees(x)
将弧度转换为角度
delattr()
从对象中删除指定的属性
dict()
返回字典(数组)
dir()
返回属性和方法的列表。
divmod()
返回商和余数。
enumerate()
获取集合作为枚举对象返回。
eval()
评估并执行表达式
exec()
执行指定的代码
exp(x)
返回e的x次幂(ex)
fabs(x)
返回数字的绝对值
filter()
排除可迭代对象中的项目
float()
返回浮点数。
format()
格式化指定值。
floor(x)
返回数字的下舍整数
frozenset()
返回 frozenset 对象
getattr()
返回指定属性的值
globals()
以字典返回当前全局符号表
hasattr()
判断是否拥有指定的属性
hash()
返回指定对象的哈希值
help()
执行内建的帮助系统
hex()
把数字转换为十六进制值
hypot(x, y)
返回欧几里德范数
id()
返回对象的id
input()
允许用户输入
int()
返回整数
isinstance()
判断指定对象的实例
issubclass()
判断指定对象的子类
iter()
返回迭代器对象
len()
返回对象的长度
list()
返回列表
locals()
返回本地符号表的更新字典
log(x)
如math.log(math.e)返回1.0
log10(x)
返回以10为基数的x的对数
map()
返回指定的迭代器
max()
返回可迭代对象中的最大项目
memoryview()
返回内存视图对象。
min()
返回可迭代对象中的最小项目。
modf(x)
返回x的整数部分与小数部分
next()
返回可迭代对象中的下一项。
object()
返回新对象
oct()
把数转换为八进制
open()
打开文件并返回文件对象
ord()
转换指定字符的Unicode的整数
pow()
返回 x 的 y 次幂的值。
print()
打印标准输出设备
property()
获取、设置、删除属性。
range()
返回数字序列,从 0 开始
radians(x)
将角度转换为弧度
repr()
返回对象的可读版本。
reversed()
返回反转的迭代器。
round()
对数进行舍入。
randrange([start,] stop [,step])
从集合中获取一个随机数
random()
随机生成下一个实数,它在[0,1)范围内。
set()
返回新的集合对象
sin(x)
返回的x弧度的正弦值
setattr()
设置对象的属性
slice()
返回 slice 对象
sorted()
返回排序列表
@staticmethod()
把方法转换为静态方法。
seed([x])
改变随机数生成器的种子seed
shuffle(lst)
将序列的所有元素随机排序
str()
返回字符串对象
sum()
对迭代器的项目进行求和。
super()
返回表示父类的对象。
sqrt(x)
返回数字x的平方根。
tan(x)
返回x弧度的正切值。
tuple()
返回元组。
type()
返回对象的类型。
uniform(x, y)
随机生成下一个实数,它在[x,y]范围内。
vars()
返回对象的__dict__属性。
zip()
从迭代器返回一个迭代器。
__import__()
用于动态加载类和函数。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4