静态方法:
#静态方法
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)
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")
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(私有变量不能被继承)如果使用访问器即可被继承
print(Zilei.a)#通过子类继承父类中的a(私有变量不能被继承)如果使用访问器即可被继承
函数闭包:
不带参数的闭包:
def foo():
def bar():
return "hello"
return bar
def bar():
return "hello"
return bar
f1=foo()
print(f1())
print(f1())
'''执行原理:(执行函数用()调用,所以执行函数的函数也要用(),所以print(f1()))
print(f1()) 走f1的函数——因为f1=foo() 走foo()的函数
——def foo()——return bar——def bar()——return "hello"'''
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函数
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)
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"""
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
print("HELLO2")
def warp():
print("HELLO")
return func()
return warp
@deco
def Joker():
print("hello")
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)
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)