學習內容:
物件導向程式設計,繼承與多型
tips:多型的核心思想是同一型別的不同例項,同一訊息的不同響應
重點:1.子類繼承父類
我們在定義完父類之後,在建立子類時可以直接引用父類
定義及引用格式如下:
class 子類名(父類名):
def ——init———(self,父類關鍵字(多個),子類關鍵字(多個)):
#這個時候宣告變數的時候無需在乙個乙個定義,呼叫父類即可
父類名.init(self,父類關鍵字(多個))
或者(super().init(父類關鍵字(多個)))
#以上兩種定義都可以實現繼承
self.子類關鍵字(多個)=子類關鍵字
defrepr(self):#防止列印訊息無內容,或者顯示無用內同
return 「*{}」.format(self.子類關鍵字)#僅提供一種形式,具體內容自己設定。
在上述定義好之後我們便可以進行對子類的操作,包括定義函式,引用等等。
以下我將直接進入**段,回顧一下學習內容。
(還是以之前健身為例子)
1.首先我們建立父類名為fitness。
具體**如下:
class fitness: # 建立了健身這個類
def __init__(self,
name=" ",
***=" ",
birthday=" ",
aim="減脂",
weight=" ",
heart_rate=" ",
blood_pressure=" ",
recommend_sport=none):
# 初始化,我們需要將基本訊息和條件寫入,即使沒有測得數字,我們可是預設附上內容,在後續我們錄入數值時,可以自動替換掉
self.name = name
self.*** = ***
self.birthday = birthday
self.aim = aim
self.weight = weight
self.heart_rate = heart_rate
self.blood_pressure = blood_pressure
self.recommend_sport = recommend_sport
fitness.count += 1
def __repr__(self):
return "姓名:{}".format(self.name)
#開始
@property
def age(self):
return datetime.date.today().year - self.birthday.year
@age.setter # 無需冒號
def age(self, value): # age為屬性,可以隨時呼叫了
raise attributeerror("禁止更改年齡")
@age.deleter
def age(self):
raise attributeerror("禁止刪除年齡")
上述父類因為引用了年齡,年齡是可變的所以在操作時要匯入datetime包
import datetime
2.父類建立好之後,我們便可以宣告了
man1 = fitness(「zzh」, 「man」, datetime.date(1998, 1, 10), 「增肌」, 「55」, 「85」, 「120-70」)
man2 = fitness(「wxj」, 「man」, datetime.date(1997, 1, 10), 「增肌」, 「55」, 「85」, 「120-70」)
man3 = fitness(「lonely」, 「man」, datetime.date(1996, 1, 10), 「增肌」, 「55」, 「85」, 「120-70」)
man1.print_out()
上述在建立好之後實現父類裡面的函式呼叫,即print_out()的呼叫
3.子類的建立,定義宣告
因為涉及到繼承,是本次的重點
****建立子類,**如下
**class coach(fitness):
definit(self, name, ***, birthday, aim, weight, heart_rate, blood_pressure, recommend_sport, speciality,
salary):
fitness.init(self, name, ***, birthday, aim, weight, heart_rate, blood_pressure, recommend_sport)
#還可以使用如下:
#super().init(name,***,birthday,aim,weight,heart_rate,blood_pressure,
recommend_sport)一樣可以使用
self.speciality = speciality
self.salary = salary
defrepr(self):
return 「此教練擅長:{}\n所帶會員名字:{}」.format(self.speciality, self.name)
def addsalary(self, bounspercentage, addpercentage):
return self.salary * (1 + bounspercentage + addpercentage)
@property
def age(self):
return datetime.date.today().year - self.birthday.year
我們在建立好子類之後,便可以對子類進行建立內容和使用了
coach1 = coach(「zzh」, 「man」, datetime.date(1998, 1, 10),「增肌」, 「55」, 「85」, 「120-70」, 「squat」, 「抗阻力訓練」, 8000)
建立之後,我們可以列印coach1
print(coach1)
#此時會呼叫到repr函式(位於子類中,列印repr的內容)
print(「此教練工資:{}」.format(coach1.addsalary(0.1, 0.2)))#呼叫addsalary函式
print(「會員的生日:{}」.format(coach1.age))#age使用到裝飾器,age成為乙個單獨的屬性,便可以呼叫
print(coach1.birthday)#列印生日資訊,具體格式參見********
python day6 物件導向
物件和類 什麼是物件,什麼是類 python中一切皆為物件,且python3統一了類與型別的概念,型別就是類,所以,不管你信不信,你已經使用了很長時間的類了 class lei print 666 例項化 duixiang lei 物件指向這一類的 記憶體位址 類是由屬性 變數 和技能 函式 的組合...
Python Day 2 物件導向程式設計
property裝飾器 將乙個函式變成屬性呼叫 在繫結屬性的時候,如果把屬性資料暴露出去,雖寫起來簡單但無法檢查引數,導致資料可以隨意更改。所以需要乙個set和乙個get,通過set來檢查設定引數。訪問器 getter 把乙個訪問器變為屬性只需要加上 property 只定義getter方法不定義s...
python day8 9 物件導向程式設計
物件是具體的,類是抽象的。物件都有屬性和行為,把一堆有共同特徵的物件的靜態特徵 屬性 和動態特徵 動作 抽取出來後就可以構造出類。可見性問題 通過類建立出物件後,物件的引數是有可見性問題的。一般引數都是由私有 受保護 公開三個狀態。python裡只有私有和公開狀態。但是大家都是成年人的,要對自己的行...