物件導向 組合

2022-09-03 03:30:09 字數 2128 閱讀 1312

乙個物件的屬性是來自另一類的物件,稱之為組合。

組合也是用來解決類與類**冗餘的問題

#組合的基本形式

class

too:#作為另乙個物件的屬性

pass

class

bar:

def __init__(self,too):

self.too =too

t1 =too()

b1 =bar(t1)

class

too:

a =1111

def__init__

(self,x,y):

self.x =x

self.y =y

class

bar:

b=222

def__init__

(self,m,n,too):

self.m=m

self.n=n

self.too =too

t1 = too(1,2)

b1 = bar(5,10,t1)

b2 = bar(10,20,t1)

#bar類中實際上需要too的三個屬性,但是init定義的話,

#建立需要每次定義多三個引數

#使用組合這種方式不僅可以使用t1物件中資料和函式屬性,還可使用類的屬性

print

(b1.too.x)#1

print

(b1.too.a)

#1111

#傳值減少繁瑣,同時too類,面對複雜的類也可以條理明細

舉例:

#

繼承也可以減少冗餘**

class

schoolman:

def__init__

(self,name,age,gender):

self.name =name

self.age =age

self.gender =gender

class

course:

def__init__

(self,name,period,price):

self.name=name

self.period =period

self.price =price

#需要課程資訊,

class

student(schoolman):

def__init__

(self,name,age,gender,course):

super().

__init__

(name,age,gender)

self.course =course

defcheck_course(self):

print('選擇'

%(self.name,self.course.name,self.course.period,self.course.price))

#老師類同樣需要課程資訊

class

teacher(schoolman):

def__init__

(self,name,age,gender,course,level,salaries):

super().

__init__

(name,age,gender)

self.course =course

self.level =level

self.salaries =salaries

defcheck_course_info(self):

print('

' %( self.course.name, self.course.period, self.course.price))

c1 = course('

python

','5month

',30000)

s1= student('

s1',18,'

male

',c1)

t1 =teacher('

egon

',18,'

male

',c1,10,5000)

s1.check_course()

t1.check_course_info()

物件導向 組合

物件導向之組合 1 什麼是繼承?什麼是組合?顧名思義 繼承就是什麼是什麼的關係 組合就是什麼有什麼的關係 class person nationnality china def init self,name,age,self.name name self.age age self.class tea...

物件導向 物件的組合

組合 乙個類的例項可以當做引數傳給另乙個類的例項 class school def init self,name,address self.name name self.address address class course def init self,name,price,outline,sch...

物件導向初識(組合)

一 物件導向 組合 定義 給乙個類的物件封裝乙個屬性,這個屬性是另乙個類的物件。意義 讓類的物件與另乙個類的物件產生關係,類與類之間產生關係。說白了也就是把a物件當成屬性傳入b物件,然後讓b物件1去呼叫a物件 人物使用 攻擊另乙個人物 class game role def init self,na...