菜鸟教程yyds:
https://www.runoob.com/w3cnote/python-func-decorators.html
一。函数装饰器@
在阅读很多python项目时,我们常常会看到@staticmethod,@classmethod 和 @property,这究竟是怎么一回事呢,赶快来跟小编来看一看。
参考:https://www.runoob.com
1.1什么是函数装饰器
首先@XXX是指函数装饰器,简单来说函数装饰器相当于函数的嵌套
@funA
def funB():
#...
相当于
funA(funB())
即,将函数 B 作为参数传给 A() 函数
1.2内置函数装饰器
1.2.1@staticmethod,
返回函数的静态方法
class A(object):
@staticmethod
def a(args1,args2):
#...
A.a(args1,args2)
该方法不要求函数a()必须传入参数,例如self,调用a时不需要实例化,也可以实例化后调用。
1.2.2@classmethod
修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。
class A(object):
a = 1
def func1(self):
print ('func1')
@classmethod
def func2(cls):
print ('func2')
print (cls.a)
cls().func1()
A.func2()
输出结果为:‘func1’,1,‘func2’
1.2.3@property
使方法可以像类的属性一样访问,不需要加括号
class A(object):
def __init__(self):
self.a = 1
def func1(self):
print( self.a)
@property
def func2(self):
print ( self.a)
a = A()
print(a.func1) #输出1
print(a.func2())
二。弱引用weakref模块
python的弱引用指引用一个对象但不增加它的引用计数器,方便Python在对象的引用计数为0或只存在对象的弱引用时将回收这个对象。
https://blog.csdn.net/qdx411324962/article/details/47291265