(一)Super()用法扫盲(给自己扫盲)
1. super(child_class,self) 这句话经历了什么
过程是:首先找到child_class的父类,即father_class,然后再把子类的对象转换为父类的对象。
2.super()使用形式
在python2.0版本中,使用这个方法必须使用super(father_class,self)的形式,其中第一个类名是子类;而在python3.0版本中只需要写super()即可。
3.一般方法调用形式:super().func()
super().func()的用法理解起来很简单,就是一个对象调用了类中的一个函数。
super().init()的意思就是,将子类的对象转换为父类的对象,并调用父类的init()函数。
其他函数以此类推…
4.一些简单的例子
4.1 当子类不做任何处理的时候,会默认继承父类的方法
class father_class():
def name(self):
print("I'm from father class.")
def do_something(self):
print("father does something")
class child(father_class):
pass
A = child()
print(A.name())
print(A.do_something())
I'm from father class.
None
father does something
None
4.2 当子类定义父类相同名字的方法的时候,会覆盖父类的方法
class father_class():
def name(self):
print("I'm from father class.")
def do_something(self):
print("father does something")
class child1(father_class):
def name(self):
print("I'm from child1 class.")
def do_something(self):
print("child1 does something")
B = child1()
print(B.name())
print(B.do_something())
I'm from child1 class.
None
child1 does something
None
4.3 有的时候我们想在父类的函数基础上增加自己的部分,那就需要先继承父亲的方法,即super().func(),再加上自己方法。
class father_class():
def name(self):
print("I'm from father class.")
def do_something(self):
print("father does something")
class child2(father_class):
def name(self):
super().name()
print("I'm from child2.")
def do_something(self):
super().do_something()
print("child2 does something.")
C = child2()
print(C.name())
print(C.do_something())
I'm from father class.
I'm from child2.
None
father does something
child2 does something.
None
(二)python中@的用法
1.长啥样
@A
def fun()
一共两行,第一行的@A叫做修饰符,本质也是函数,第二行的fun()叫被修饰的函数。
其中A()本身是一个函数,这个函数的返回值也是一个函数
2.啥意思
这两行的意跟下面等效。
fun = A(fun)
即将fun的函数名传到A()中然后执行A这个函数,并将返回值传给fun,这样fun就跟原来不一样了
也就是说你下回每次调用fun的时候调用的就是修饰好的函数了。
3.有啥用
修饰符修饰符,当然起到的是修饰的作用。
所谓的修饰就是在这个fun()执行之前,先执行一些A()中的函数操作。
至于具体哪些操作要看这个A(),但是一般A都是为fun服务的
4.上才艺
def F1(x):
def F2():
print('1')
x()
print('2')
return F2
def F3():
print('F3')
F3()
F3=F1(F3)
print("after @")
F3()
F3
after @
1
F3
2
5.正经教学:
https://www.runoob.com/w3cnote/python-func-decorators.html
(三) python中defaultdict的用法
https://www.jianshu.com/p/bbd258f99fd3