python day3

余生颓废 提交于 2019-11-26 14:05:18

静态方法:

#静态方法
class A(object):
    @staticmethod   #静态方法
    def a():           #定义的此方法的参数不含self
        print("A")      #不属于类,不能直接调用,要使用静态方法通过给类发消息,才能调用
joker = A()
joker.a()

 

 

继承:

class fulei(object):
    def __init__(self):
        self.a=100
        self.b=3
    def _Sum(self):
        Sum=self.a+self.b
        print(Sum)
class zilei(fulei):
    def __init__(self):
        fulei.__init__(self)
        #super(zilei,self).__init__(self)
        self.aa=200
    def lala(self):
        print("haha")
Zilei=zilei()
print(Zilei.a)#通过子类继承父类中的a(私有变量不能被继承)如果使用访问器即可被继承
 
 
 
函数闭包:
不带参数的闭包:
def foo():
    def bar():
        return "hello"
    return bar
f1=foo()
print(f1())
'''执行原理:(执行函数用()调用,所以执行函数的函数也要用(),所以print(f1()))
print(f1()) 走f1的函数——因为f1=foo() 走foo()的函数
——def foo()——return bar——def bar()——return "hello"'''
 
带参数的闭包:
def foo():              #定义一个foo的函数
    l = []               #定义一个l的列表
    def bar(i):          #定义一个bar的带参数i的函数
        l.append(i)      #将参数i追加到l列表中
        return l        #弹出列表l
    return bar          #弹出bar函数
f1 = foo()             #将foo函数示例化为f1
res1 = f1(1)           
print(res1)            #打印参数为1的f1函数
#f1=foo()               #重新将foo函数实例化为f1,(不会在上面追加进1的列表里继续追加)
res2 = f1(2)            #而是重新再空列表里追加
print(res2)
"""执行流程:
print(res1)——res1=f1(1)——f1=foo()——def foo():
——l=[]——return bar——def bar(i)——l.append(i)——return l——print(l)打印l"""
 
 
装饰器:
不带参数的装饰器:
def deco(func):
    print("HELLO2")
    def warp():
        print("HELLO")
        return func()
    return warp
@deco
def Joker():
    print("hello")
Joker()
 
 
装饰器实例:
def deco(func):           #启动函数a(1,2),发现此函数有装饰器@deco,先走装饰器@deco
    def Sum(h1,h2):       #带着函数a(1,2)走def deco(func):——return Sum——走Sum函数def Sum(h1,h2)
        sum=h1+h2         #走sum=h1+h2(也就是带进来的数1、2相加)——print(sum)
        print(sum)        #return func(h1,h2),弹出带着两个参数(可以是刚刚带进来的两个也可以是其他两个变量)的a的函数
        return func(h1,h2)#——def a(a1,a2):——print(a1,a2)
    return Sum
@deco
def a(a1,a2):
    print(a1,a2)
@deco
def b(b1,b2):                #和上面执行a的函数的程序是一样的
    print(b1,b2)
@deco
def c(c1,c2):
    print(c1,c2)
a(2,3)
b(1,2)
c(3,4)
 
 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!