python 類和物件之繼承

2021-08-15 07:40:38 字數 2069 閱讀 5113

繼承:

1 什麼是繼承?繼承的特點:

# 繼承

#object 頂級父類 python中所有的類都是直接繼承自object

#繼承特點:

#1.子繼承父類,子類擁有父類的所有屬性和函式

#2.子類繼承父類 子類可以具有自己獨有的屬性和函式,但是父類不可以使用子類獨有的的屬性和函式

#3.子類繼承父類 ,子類可以重寫父類的函式

為什麼要重寫父類函式?一般都是因為父類中的函式滿足不了子類功能的需求,才會去重寫父類

# 3.1 完全重寫 在子類中,重新定義乙個和父類函式名稱一樣的函式,並且在該函式中執行的功能和父類完全不同

# 3.2 部分重寫 在子類中,重新定義乙個和父類函式名稱一樣的函式,在重寫的函式中呼叫父類中的函式,先執行父類中原有的功能,然後在該函式中新增額外功能的**,這樣的話,既保留了父類的原有的功能,又擴充套件了函式新的功能

2 小例子
#父類

class people(object):

#初始化函式

def __init__(self,name,age,weight):

self.name =name

self.age =age

self.weight = weight

#物件函式

def sleep(self):

print('這是people類中的sleep函式')

#根據工作時間,計算體重是否減少的功能函式

def work_time(self,time):

#如果工作時間在8-12小時範圍,體重-2斤

#如果超過12小時,體重-5斤

if 812:

self.weight -= 5

#宣告man類,繼承自people類

class man(people):

def __init__(self,name,age,***,weight,height):

#呼叫父類的初始化,將父類的屬性進行初始化,並且將self物件作為引數傳遞到父類的初始化函式中

super(man,self).__init__(name,age,weight)

#初始化當前類擁有的屬性

self.*** = ***

self.height = height

def drink(self):

print('這人光喝酒')

def sleep(self):

#在這個sleep函式中,可以執行和父類中完全不同的功能

print('這是man類中的sleep函式')

#2.重寫work_time函式

def work_time(self,time):

#2.1根據時間計算體重

super(man,self).work_time(time)

#2.2根據體重判斷身材

#身高-105 = 體重 身材標準

#身高-105 > 體重 身材偏瘦

#身高-105 > 體重 身材偏胖

result = self.height-105

if result>self.weight:

print('偏瘦')

elif resultprint('偏胖')

else:

print('標準')

#建立people物件p1

p1 = people('張三',22,170)

p1.sleep()

p1.work_time(13)

print('p1工作之後的體重:%s'%p1.weight)

# 父類不能呼叫子類的函式

# p1.drink()

#建立man類物件

m = man('李四',22,'男',70,190)

m.sleep()

#m在執行work_time時,除了計算體重還要判斷身材是否標準

m.work_time(13)

print('m工作之後的體重:%s'%m.weight)

print(m.name)

print(m.age)

print(m.***)

Python類繼承物件

類宣告從object繼承有什麼理由嗎?我剛剛找到了執行此操作的 但找不到很好的理由。class myclass object class code follows.難學python的歷史 python最初對類的再現在許多方面都被破壞了。到發現此故障時,已經為時已晚,他們必須予以支援。為了解決此問題,...

Python3 類和物件 繼承

class derivedclassname baseclassname 子類 父類 如果子類中定義與父類同名的方法或屬性,則會自動覆蓋父類對應的方法或屬性,父類中的方法不受影響 1 呼叫未繫結的父類方法 class a def init self print 進入a print 離開a class...

python類之繼承

概述 編寫類時並非總是要從空白開始寫,乙個類繼承另乙個類,他將自動獲得另乙個類的所有屬性和方法 原有的類稱為父類,而新類稱為子類。子類繼承了其父類所有的屬性和方法,同時還可以定義自己的屬性和方法。1.定義子類,並且繼承父類 car是父類 class car def init self,make,mo...