Mixin程式設計

2021-09-29 12:05:12 字數 2084 閱讀 7994

1

. 和多繼承類似

2. 是一種開發模式

將多個類中功能進行組成使用

classa:

defa

(self)

:print

('a'

)classb:

defb

(self)

:print

('b'

)class

c(a,b)

:pass

c=c(

)c.a(

)c.b(

)

多繼承會修改源**,如果需要動態的給子類新增乙個父類則需要使用__bases__(

)classa:

defa

(self)

:print

('a'

)classb:

defb

(self)

:print

('b'

)classd:

defd

(self)

:print

('d'

)class

c(b)

:pass

c=c(

)c.__bases__+=

(a,d)

c.d(

)

1

. 以上兩種形式都使用了繼承關係

2. __dict__(

)展示物件的屬性,可以進行增加刪除修改操作-

--例項屬性

classa:

age=

15def

a(self)

:print

('111111111111'

)def

__init__

(self)

: self.name=

'hehe'

self.***=

'男'aa=a(

)print

(aa.__dict__)

aa.__dict__[

'c']

=100

del aa.__dict__[

'name'

]print

(aa.__dict__)

# 利用外掛程式完成給其他類新增功能

class

plugin

:#是一種工具

def__init__

(self)

: self.methods=

#儲存方法物件

defplugin

(self,owner)

:#向owner物件中新增methods中的方法

for i in self.methods:

#i 就是每個方法物件

owner.__dict__[i.__name__]

=i def

plugout

(self,owner)

:for i in self.methods:

del owner.__dict__[i.__name__]

class

a(plugin)

:#a他是乙個功能

def__init__

(self)

:super()

.__init__(

)# 建立父類的methods列表

defa

(self)

:print

('a'

)class

b(plugin)

:#a他是乙個功能

def__init__

(self)

:super()

.__init__(

)# 建立父類的methods列表

defb

(self)

:print

('b'

)classc:

pass

c=c()a(

).plugin(c)b()

.plugin(c)

c.a(

)c.b(

)del c.a

Python的Mixin程式設計機制

mixin 簡介 mixin 程式設計是一種開發模式,是一種將多個類中的功能單元的進行組合的利用的方式,這聽起來就像是有類的繼承機制就可以實現,然而這與傳統的類繼承有所不同。通常 mixin 並不作為任何類的基類,也不關心與什麼類一起使用,而是在執行時動態的同其他零散的類一起組合使用。特點 使用 m...

關於mixin混入

這篇文章講的可以 公共元件最主要的作用還是復用相同的vue元件 有檢視,有方法,有狀態 mixins 如果只是提取公用的資料或者通用的方法,並且這些資料或者方法,不需要元件間進行維護,就可以使用mixins。類似於js中封裝的一些公用的方法,比如utils.js那種 vuex公共狀態管理,在乙個元件...

mix in 混入技術

vue的 高階用法 為了減少元件之間 的重複問題 官方給的例子 自我理解 在common資料夾中新建乙個mixin.js的檔案,在這個檔案裡我們建立乙個mixin物件,在這裡我們可以存放其他元件共用的一些內容 可以存放 data,methods,created,mounted,甚至是componen...