python 類關聯關係

2021-10-09 22:53:14 字數 4727 閱讀 8527

類的關聯關係

乙個類呼叫另乙個類的屬性和函式方法

「」"公路(road):

屬性:公路名稱 , 公路長度

車(car):

屬性: 車名,時速

方法: 1.求車名在那條公路上以多少的時速行駛了多久

get_time(self,road)

2.初始化車屬性資訊__init__ 方法

3.列印物件顯示車的屬性資訊

「」"

//import random

class

road

: #定義road類

def __init__

(self,name,len)

: self.name=name

self.len=len

def func

(self)

:print

('123'

)class

car: #定義car類

def __init__

(self,brand,speed)

: self.brand=brand

self.speed=speed

def get_time

(self,road)

: #!!!

!! 重點:

::road可以是個物件 road和r指向同一位址 另外要注意 形參只能接收物件 不能接收類

ran_time=random.

randint(1

,10) msg=

'{}品牌的車在{}上以{}速度行駛{}小時{}'

.format

(self.brand,road.name,self.speed,ran_time,road.

func()

) #呼叫了road這個形參傳入的類 這個類中類的.name road.name 還有類的函式road.

func

(),輸出的結果帶none,如果想去除none,就給func新增返回值

return msg

def __str__

(self)

: #物件呼叫該類時 呼叫完後自動執行str

return

'{}品牌的,速度:{}'

.format

(self.brand,self.speed)

print

('------------------------二號has a例子---------------'

)#建立例項化物件

r=road

('京藏高速'

,120

)audi=

car(

'奧迪'

,120

) #呼叫str方法 return給乙個物件 必須有個物件來接收值

print

(audi) #輸出類的str返回的值

print

(r.name)

audi.

get_time

(r) #將乙個物件當成引數傳輸

print

(audi.

get_time

(r))

#因為r指向類 r改變了類位址中的屬性 輸出的就不同r=

road

('京藏高速'

,120

) #每次乙個物件呼叫類 類都會建立乙個新的位址 複製類到這個新位址中 每個物件都只能指向乙個新位址 同時建立兩個物件 就同時指向兩個位址

r.name=

'滬杭高速'

print

(audi.

get_time

(r))

print

(audi.

get_time(r

))結果為'------------------------二號has a例子---------------'

奧迪品牌的,速度:

120京藏高速

123123

奧迪品牌的車在京藏高速上以120速度行駛4小時none

123奧迪品牌的車在滬杭高速上以120速度行駛6小時none

123奧迪品牌的車在京藏高速上以120速度行駛1小時none

二號例子

#student book computer

#知識點: 1。has a 乙個類中使用了另外一種自定義的型別

# student使用了computer

# 2.型別:

# 系統型別:str int float list dict tuple set

# 自定義型別: 自定義的類 都可以將其當成一種型別 s=student() s是student型別的物件

//

class

computer

: def __init__

(self,brand,type,color)

: self.brand=brand

self.type=type

self.color=color

def online

(self)

:print

('正在用電腦上網'

) def __str__

(self)

:return self.brand+

'---'

+self.type+

'---'

+self.color

class

book

: n=

0 def __init__

(self,bookname,author,number)

: self.name=bookname

self.author=author

self.number=number

def reduce

(self)

: global n

n+=1return n

def __str__

(self)

:return self.name+

'-*****--'

+self.author

class

student

: def __init__

(self,name,computer,book)

: self.name=name

self.computer=computer

self.book=book

self.books=

#建議用列表 儲存多本書 我多給你傳幾本

self.books.

(book.author) #book引用其他類的物件

def borrow_book

(self,book)

:for i in self.books: #self.books已在init中定義了 且在後邊的物件呼叫中先執行過了

if i==book.name: #i將遍歷列表中的作者和書名

print

('已經借過此書'

)break

else

: #將引數book新增到列表中

self.books.

(book.name)

print

('借書成功'

)break

# self.books.

(book)

def show_book

(self)

:for book in self.books:

print

(book)

def __str__

(self)

: #自定義型別 需用str強轉 list也需要str一下

return self.name+

'---'

+str

(self.computer)

+'---'

+str

(self.books)

#建立物件

computer=

computer

('mac'

,'pro'

,'淺灰色'

)book1=

book

('盜墓筆記'

,'南派三叔',10

)book2=

book

('鬼吹燈'

,'天下霸唱',8

)stu=

student

('songsong'

,computer,book1) #形參的型別 除了系統定義的str int list dict float 之外 還有使用者自定義型別 :類 比如computer型別 book類

print

(stu)

stu.

show_book()

print

('第二次借書'

)stu.

borrow_book

(book2)

stu.

borrow_book

(book1)

stu.

show_book()

```結果為songsong--

-mac--

-pro--

-淺灰色---[

'南派三叔'

]南派三叔

第二次借書

借書成功

借書成功

南派三叔

鬼吹燈盜墓筆記

依賴關係 關聯關係

一 依賴關係 a物件作為b物件的區域性變數或是方法形參的,b依賴於a,這時候我們稱a與b之間存在一種依賴關係 給土豪打 物件作為形式引數 void calltuhaowithphone czphone phone void sendmessagetodiaosi 1 什麼是引數依賴 當a物件作為另外...

類的關聯 組合 聚合關係

關聯 類的例項持有著對其他物件的引用,沒有整體與部分的意義。組合 整體與部分的關係,且類的例項與其內部的物件在生命期上保持一致,同時建立和銷毀。另外,組合不允許有組合迴路,否則編譯不報錯,但是執行時將會出現stackoverflowexception 的異常導致程式終止。聚合 整體與部分的關係,且類...

Elasticsearch關聯關係

elasticsearch父子關係 5.x參考 官網join介紹 es6.x一對多方案參考 注意 elasticsearch的關聯關係,必須要在同乙個索引裡面,而且父子關係必須在同乙個分片中。es6.x版本規定乙個索引中只能有乙個type,這就導致了,父子關係就必須放在同乙個type中。例子 本部落...