定義:在**執行期間動態增加功能的方式,稱之為「裝飾器」(decorator)。本質上,decorator就是乙個返回函式的高階函式。
import functools,time
defexecute_time
(func)
:# 定義裝飾器
@functools.wraps(func)
# 把名字改回來
def(
*args,
**kw)
: start_time = time.time(
) res = func(
*args,
**kw)
end_time = time.time(
)return res
@execute_time
deff()
:print
("property")f(
)# 現在執行f(),相當於執行execute_time(f)
每次執行乙個例項方法時,程式會自動將例項作為第乙個引數傳入到方法,也就是每個方法預設的第乙個引數self
。
使程式不把例項作為第乙個引數傳入。
使程式把類作為第乙個引數傳入。
class
girlfriend
:def
__init__
(self, name)
: self.name= name
defabout_me
(self)
:print
(self.name)
@staticmethod
defbio()
:print
('全心全意為主人服務!'
) @classmethod
defcls_name
(cls)
:print
(cls.__name__)
a typical use is to define a managed attribute x.舉例來說,你有乙個屬性
x
,但是你不希望外界可以直接對他進行操作。於是你定義乙個同名的方法x
,用property
把他變成property attribute
,也就是仍然像訪問屬性一樣訪問它,但是有了一些限制。原來的屬性x
變為_x
。
classc:
def__init__
(self)
: self._x =
none
@property
defx
(self)
:"""i'm the 'x' property."""
return self._x
@x.setter
defx(self, value)
: self._x = value
@x.deleter
defx(self)
:del self._x
python 常用裝飾器
對於類的方法,python內建的 property裝飾器就是負責把乙個方法變成屬性呼叫的 class student object property defscore self return self.score score.setter defscore self,value ifnot isin...
python常用裝飾器函式
1 property 將方法偽裝成屬性 2 setter 修改屬性 只有當被property裝飾的方法,又實現了乙個同名方法,且被setter裝飾器 裝飾了,在被裝飾的方法賦值的時候,就觸發被setter裝飾器裝飾的方法 3 deleter 刪除屬性 class student def init s...
python裝飾器 Python 裝飾器
簡言之,python裝飾器就是用於拓展原來函式功能的一種函式,這個函式的特殊之處在於它的返回值也是乙個函式,使用python裝飾器的好處就是在不用更改原函式的 前提下給函式增加新的功能。一般而言,我們要想拓展原來函式 最直接的辦法就是侵入 裡面修改,例如 這是我們最原始的的乙個函式,然後我們試圖記錄...