python 類關聯關係
類的關聯關係
一個類呼叫另一個類的屬性和函式方法
“”"
公路(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
京藏高速
123
123
奧迪品牌的車在京藏高速上以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+=1
return 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.append(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.append(book.name)
print('借書成功')
break
# self.books.append(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---淺灰色---['南派三叔']
南派三叔
第二次借書
借書成功
借書成功
南派三叔
鬼吹燈
盜墓筆記
相關文章
- 表的關聯關係
- 集合類關係
- mybatis關聯關係對映MyBatis
- 在Java中,以下有關類的關聯關係描述錯誤的是()Java
- Hibernate 的關聯關係對映
- 物件導向程式設計程式碼詳解(依賴關係,關聯關係,組合關係)物件程式設計
- python 關係對映Python
- 類與類之間的基本關係
- UML類圖--類之間的關係
- 【java】類之間的關係Java
- 8 張圖掌握 Laravel 的 Eloquent 關聯關係Laravel
- c++類與類的聚合(Aggregation)關係C++
- 介面、抽象類、普通類之間的關係抽象
- 物聯網與APP的關係?APP
- WPF 控制元件類派生關係控制元件
- Java類關係之代理(代理模式)Java模式
- 設計模式存在哪些關聯關係,六種關係傻傻分不清--- UML圖示詳解設計模式
- JPA關係對映系列五:many-to-many 關聯表存在額外欄位關係對映
- Python 關聯處理Python
- 類圖的6大關係詳解
- tensorflow與python版本對應關係Python
- Python和人工智慧的關係Python人工智慧
- 【python】【安裝包依賴關係】Python
- Python與人工智慧的關係Python人工智慧
- 海量文字中挖掘人物關聯關係核心技術介紹
- SAP Spartacus 的 TMS 和 Event Service 實現的關聯關係
- JPA關係對映系列四:many-to-many 關聯對映
- UML類圖介紹&類的六大關係
- 資料關係比較:相關性 vs 因果關係
- 關於 Angular 部署以及 index.html 裡 base hRef 屬性的關聯關係AngularIndexHTML
- 物聯網與erp軟體的關係
- C++ exception 異常類繼承關係C++Exception繼承
- 類之間的6種關係詳解
- Java設計模式-類之間的關係Java設計模式
- Intelligent Enterprise 和企業數字化轉型的關聯關係Intel
- SAP HUM 將HU與檢驗批號碼解除關聯關係
- SAP Business Technology Platform 上 Roles,Roles collection 和 Scopes 的關聯關係Platform
- 聊聊人工智慧和Python的關係人工智慧Python