函数
内置函数+自定义函数
函数声明
1
2
3
4
5
6
7
8
9
10def funName([*]params): print("function context...") [return 's'] / pass / my_fun=lambda a,b:a-b
函数调用
1
2
3
4
5
6funName(1) funName(1,2) print(my_fun(3,2))
模块与包
一个.py结尾的文件就是一个模块,python中有很多自带模块(标准库)和第三方模块,模块间可以引用。
包是存放模块的文件夹。3.3版本以前,文件夹中有__init__.py其他包才可以引用此包模块等。
创建包
引用
import只是不能引用包,可以引用模块,函数,变量等(可以直接使用“.”,但在用的时候也要加上完整路径名)
也可以form 包 import 模块
,form 模块 import 函数等
,form ... import *
注:from后面引入 可省略(from后面只能是包,模块)
面向对象
创建
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23class cat: # 这些都是类的属性 name="" __id=0 def __init__(self): # 构造器 cat.name="波斯猫" cat.__id=1 #这些才是对象的属性 self.call="mie" def eat(self,food): # 共有方法(self是cat对象) print(cat.name+"在吃"+food) def run(speed): # 静态方法 print(cat.name + "在以"+speed+"的速度跑,它的id是"+str(cat.__id))
使用
1
2
3
4
5
6from study_enumerate import cat cat.run("猫") c= cat() c.eat("火腿")
继承
可多继承,父类方法可重写
特:构造器
创建
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16class son(father): pass class PersianCat(cat): def __init__(self): # 重写父类构造器 # cat.__init__(self) super().__init__() # 调用父类构造器 # super().name="波斯猫" # 报错 cat.name="波斯猫" # super().call="miao" # 报错,'super' object has no attribute 'call' print(self.call) # 注释父类构造器后,'PersianCat' object has no attribute 'call' self.call="miao" # self是PersianCat的实例 print(self.call) # 那super()是什么,它不能当cat类对象用,也不能当cat实例化对象用,只能用来调用构造器?
super函数:python内置函数
用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。(我的理解是钻石继承就是菱形继承,事实证明的确是这样)
上面说的如果不是很懂的话,就看下面讲解:
通常情况下,我们在子类中定义了和父类同名的方法,那么子类的方法就会覆盖父类的方法。而super关键字实现了对父类方法的改写(增加了功能,增加的功能写在子类中,父类方法中原来的功能得以保留)。也可以说,super关键字帮助我们实现了在子类中调用父类的方法
super函数深入:
MRO(Method Resolution Order):python对于每一个类都有一个MRO列表. 此表的生成有以下原则:子类永远在父类之前,如果有多个父类,那么按照它们在列表中的顺序被检查,如果下一个父类有两个合法的选择,那么就只选择第一个
例1:
super(cls, inst):
mro = inst.__class__mro()
return mro(mro.index(cls) + 1)
super做了两件事情,获取mro列表,然后返回列表中下一个类
例2:
输出如下:
super(C, self).init()
self是C的实例,这个就返回了C的MRO列表
main.C,main.B, main.A, main.Base, object
调用
1
2
3persian = PersianCat() persian.eat("西餐")
最后
以上就是无限发箍最近收集整理的关于函数,模块与包,面向对象(super函数)的全部内容,更多相关函数内容请搜索靠谱客的其他文章。
发表评论 取消回复