Python基础扫盲(给自己扫)——希望自己能持续更新

(一)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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值