基於python的 類的繼承與函式的重寫

2021-08-15 07:41:40 字數 3051 閱讀 1673

# -*- coding: utf-8 -*-

# 物件導向程式設計的三個特點:封裝、繼承、多型

# 函式是封裝**的基本單位,類和物件的封裝是屬於更高階的封裝方式,在類中經常會宣告一些物件屬性,用來儲存資料的,在類中宣告的函式,是用來運算元據的,不同的功能可以封裝不同的函式

# 繼承特點:

# 1.

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

# 2.

子類繼承父類,子類可以用自己獨有的屬性和函式

,但是父類不可以使用子類獨有的屬性和函式

# 3.

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

#

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

# 3.1

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

# 3.2

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

# object

頂級父類

python

中所有的類都是直接或者間接繼承自

object

class people(object):

# 初始化函式

def

__init__(self

, name, age, weight):

self.name = name

self.age = age

self.weight = weight

# 物件函式

def

sleep(self):

print('

這是people

類中的slepp

函式')

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

def

work_time(self

,time):

# 如果工作時間在

8小時到

12小時範圍,體重-2斤

# 如果工作時間超過

12小時,體重-5斤

if 8

12: #

體重-2

self.weight -= 2

elif time > 12 :

# 體重-5

self.weight -= 5

# 宣告

man類,繼承自

people

類class man(people):

# man

類中的初始化函式

def

__init__(self

, name, age, ***, weight, height):

# 呼叫父類的初始化,將父類中的屬性進行初始化

,並且將

self

物件作為引數傳遞到父類的初始化函式中

super(man,

self).__init__(name, age, weight)

# 初始化當類擁有的屬性

self.*** = ***

self.height = height

def

somking(self):

print('

這是man

中的smoking

函式')

# 1.

完全重寫乙個

sleep

函式def

sleep(self):

# 在這個sleep

函式中,可以執行和父類中完全不同的功能

print('

這是man

類中的sleep

函式')

# 2.

重寫work_time

函式def

work_time(self

,time):

# 2.1

根據時間計算體重

# 先去執行父類中

work_time()

函式,計算體重

super(man,

self).work_time(time)

# 2.2

根據體重 判斷身材是否標準

# 再去新增額外的功能**

# 身高

- 105 =

體重 身材標準

# 身高

- 105 >

體重 身材偏瘦

# 身高

- 105 <

體重 身材偏胖

result = self.height - 105

if result > self.weight:

print('

身材偏瘦

') elif result < self.weight:

print('

身材偏胖

') else:

print('

身材標準

')#

建立people

物件p1

p1 = people('張三'

, 22

, 180)

# p1.sleep()

# 執行功能函式

# p1.work_time(13)

# print('p1

工作之後的體重:

%s'%p1.weight)

# 父類不可以使用子類單獨擁有的屬性和函式

# print(p1.***)

# p1.somking()

# 建立

man類的物件

m = man('李四'

, 22, '

男', 70

, 180)

# m.sleep()

# m在執行

work_time

函式時,除了要計算體重之外,還要判斷身材是否標準

m.work_time(12)

print('m

工作之後的體重:

%s'%m.weight)

python的類與繼承

如果在子類中需要呼叫父類的構造方法,需要顯式地呼叫父類的構造方法,或者不重寫父類的構造方法。1 init 方法 class father object def init self,name self.name name print name s self.name def getname self ...

python 類 繼承 python 類的繼承

1 所用的類都可以被繼承 2 沒有繼承其他類的類必然有乙個父類 object 3子類可以擁有父類的 init 裡的類容 派生子類除了父類的一些屬性,還會有自己的屬性和方法,這些就叫派生 如何使用 實現 class animal def init self,name,attack,hp self.na...

python類的繼承與多型

定義乙個類 class animal object defrun self print animal is runnning 繼承此類 class dog animal pass例項化 dog.run animal is runnning 以上 母類擁有乙個方法 此方法會繼承到子類,故子類也可以執行...