裝飾器(decorator)是一種與類(class)相關的語法,用來注釋或修改類和類方法。特點
@testable
class
mytestableclass
function
testable
(target)
mytestableclass.istestable // true
這裡的@testable
就是乙個裝飾器。它修改了mytestableclass
這個類的行為,為它加上了靜態屬性istestable
。testable
函式的引數target
是mytestableclass
類本身。
裝飾器外面再封裝一層函式。
function
testable
(istestable)
}@testable
(true
)class
mytestableclass
mytestableclass.istestable // true
@testable
(false
)class
myclass
myclass.istestable // false
// before
class
myreactcomponent
extends
react.component
export
default
connect
(mapstatetoprops, mapdispatchtoprops)
(myreactcomponent)
;// now
@connect
(mapstatetoprops, mapdispatchtoprops)
export
default
class
myreactcomponent
extends
react.component
class
person$`
}}function
readonly
(target, name, descriptor)
; descriptor.writable =
false
;return descriptor;
}readonly
(person.prototype,
'name'
, descriptor)
;// 類似於
object.
defineproperty
(person.prototype,
'name'
, descriptor)
;
裝飾器第乙個引數是類的原型物件,上例是person.prototype,裝飾器的本意是要「裝飾」類的例項,但是這個時候例項還沒生成,所以只能去裝飾原型(這不同於類的裝飾,那種情況時target引數指的是類本身);第二個引數是所要裝飾的屬性名,第三個引數是該屬性的描述物件。 Python day7 裝飾器基本用法
裝飾器 本質就是函式,功能是為其他函式新增附加功能 原則 1.不修改被修飾函式的源 2.不修改被修飾函式的呼叫方式 裝飾器的知識儲備 裝飾器 高階函式 函式呼叫 閉包 例 原函式 def test time.sleep 3 print 測試完成 test 測試完成目標 不改變原函式 和呼叫方式的情況...
函式裝飾器 類裝飾器
一 函式裝飾函式 defwrapfun func definner a,b print function name func.name r func a,b return r return inner wrapfun defmyadd a,b return a b print myadd 2,3 二...
類的裝飾器
def deco obj obj.x 1 obj.y 2 return obj deco 相當於foo deco foo class foo pass print foo.dict deco 相當於test deco test def test pass print test.dict 輸出 def...