介绍python修饰器的书_python修饰器
1、參數args與kwargs:
*args是元組,如def fun(args): pass 傳過去的參數是元組形式fun(1,2,3),args=(1,2,3);
*kwargs是字典型,如def fun(kwargs): pass 傳過去的參數是元組形式fun(a=1,b=2,c=3),kwargs={"a":1,"b":2,"c":3};
2、@property修飾器
被修飾的方法,將可直接被當作類屬性進行調用,使得python語言更加的簡潔。
class Dec:
@property
def value(self):
return self.__value
@value.setter
def value(self, data):
self.__value = data
if __name__ == '__main__':
dec = Dec()
dec.value = 10
print(dec.value)
/Users/chenhanlu/PycharmProjects/PyLearning/venv/bin/python /Users/chenhanlu/PycharmProjects/PyLearning/logTest.py
10
Process finished with exit code 0
【注意】所傳的值必須是私有變量,即self.__value。
3、@classmethod類方法修飾器
類方法:python中的類方法指的是可以直接用類名(也可用實例名)進行調用的方法,相當與java中的static方法。
class Dec:
@property
def value(self):
return self.__value
@value.setter
def value(self, data):
self.__value = data
@classmethod
def info(cls,data):
print('我是一個類方法,參數是>>'+str(data))
if __name__ == '__main__':
dec = Dec()
dec.value = 10
print(dec.value)
Dec.info(20)
下面添加類方法的注解,python中的類方法,相當于Java中的static修飾的方法,輸出結果為:
/Users/chenhanlu/PycharmProjects/PyLearning/venv/bin/python /Users/chenhanlu/PycharmProjects/PyLearning/logTest.py
10
我是一個類方法,參數是>>20
Process finished with exit code 0
4、靜態方法修飾器
靜態方法:不依賴于python類及類實例,放在類里邊僅僅是為了管理方便,其實也可以放到類外邊
class Dec:
@property
def value(self):
return self.__value
@value.setter
def value(self, data):
self.__value = data
@classmethod
def info(cls,data):
print('我是一個類方法,參數是>>'+str(data))
@staticmethod
def staticInfo(data):
print('我是一個靜態方法,參數是>>'+str(data))
if __name__ == '__main__':
dec = Dec()
dec.value = 10
print(dec.value)
Dec.info(20)
dec.info(30)
dec.staticInfo(40)
Dec.staticInfo(50)
/Users/chenhanlu/PycharmProjects/PyLearning/venv/bin/python /Users/chenhanlu/PycharmProjects/PyLearning/logTest.py
10
我是一個類方法,參數是>>20
我是一個類方法,參數是>>30
我是一個靜態方法,參數是>>40
我是一個靜態方法,參數是>>50
Process finished with exit code 0
5、各種方法的原則
各種方法定義規則 :
只訪問成員變量的方法 ,定義成實例方法
只訪問類變量的方法 , 定義類方法
既訪問成員變量 , 也訪問類變量的方法 , 定義成實例方法
既不訪問成員變量 , 也不訪問類變量 ,定義成靜態方法
總結
以上是生活随笔為你收集整理的介绍python修饰器的书_python修饰器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 柜台展示机可以买吗
- 下一篇: vscode 设置断点知乎_vscode