物件導向 類的組合

2022-08-20 15:27:10 字數 2394 閱讀 2945

組合

將乙個類的物件封裝到另乙個類的物件的屬性中(乙個類的物件是另乙個類的物件的屬性),就叫組合 

例如 圓形類的物件是圓環類物件的 outer 屬性的值

計算圓形相關資料的公式只和 circle 類在一起

其餘的用到公式的地方都是通過 circle 類來使用的

公式與其他類之間的關係是乙個 '松耦合' 的關係

#

圓形類from math import

piclass

circle:

def__init__

(self,r):

self.r =r

defarea(self):

return 3.14*self.r**2

defperimeter(self):

return 2*3.14*self.r

#圓環類

class

ring:

def__init__

(self,r1,r2):

if r1>=r2:

self.outer =r1

self.inner =r2

else

: self.inner =r1

self.outer =r2

defarea(self):

return 3.14 * self.outer ** 2 - 3.14 * self.inner ** 2

defperimeter(self):

return 2 * 3.14 * self.outer + 2 * 3.14 *self.inner

c = circle(5)

r = ring(6,8)

其他示例函式

class

date:

def__init__

(self,year,month,day):

self.year =year

self.month =month

self.day =day

defdate(self):

return

'%s-%s-%s

'%(self.year,self.month,self.day)

class

student:

def__init__

(self,name,num,birth,in_shcool,start_day):

self.name =name

self.num =num

self.birth = birth #

組合 self.in_school = in_shcool #

組合 self.start_day = start_day #

組合d1 = date(1999,10,27)

d2 = date(2019,1,9)

d3 = date(2019,2,9)

feng = student('

馮磊',10086,d1,d2,d3)

print

(feng.birth.year)

print

(feng.birth.month)

print

(feng.birth.day)

print

(feng.birth.date())

feng.start_day.month +=1

print(feng.start_day.date())

class

student:

def__init__

(self,name,num,course):

self.name =name

self.num =num

self.course =course

class

course:

def__init__

(self,name,price,period):

self.name =name

self.price =price

self.period =period

python = course('

python

',25000,'

6 months')

s1 = student('

任世龍',10085,python)

s2 = student('

任希同',10084,python)

s3 = student('

董鵬',10083,python)

#print(s1.__dict__)

python.price = 30000python.period = '

7 months

'print(s1.course.price)

物件導向 類組合還是類繼承?

類組 合 還 是 類繼 承?假設 我 們 有一 張 表a,有多個畫面用到。比如10個畫面用到。由於每個畫面功能不一 樣 但a表的大多數字段所以欄位都是共用的。這 種情況下,怎麼寫自己的info 類 呢?大概有3種方案 方案1 每個畫面都寫乙個自己的info類 方案2 先寫乙個表a的info類 然後每...

物件導向 類組合還是類繼承?

類組合還 是類繼承?假設我 們有一張表a,有多個畫面用到。比如10個畫面用到。由於每個畫面功能不一 樣,但a表的大多數字段所以欄位都是共用的。這種情況下,怎麼寫自己的info 類呢?大概有3種方案 方案1 每個畫面都寫乙個自己的info類 方案2 先寫乙個表a的info類 然後每個畫面的info 類...

物件導向 物件的組合

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