# -*- 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類中的sleep函式')
# 根據工作時間,計算體重是否減少的功能函式
def work_time(self,time):
# 如果工作時間在8小時到12小時範圍,體重-2斤
# 如果工作時間超過12小時範圍,體重-5斤
if 812:
self.weight -=5
# 建立people物件p1
p1 = people('張三',22,180)
p1.sleep()
# 執行功能函式
p1.work_time(13)
print ('p1工作之後的體重:%s'%p1.weight)
# 宣告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 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.height:
print ('身材偏瘦')
elif result < self.height:
print ('身材偏胖')
else:
print ('身材標準')
# 建立man類的物件
m = man('李四',23,'男',70,180)
m.sleep()
# m在執行work_time函式時,除了要計算體重之外,還要判斷身材是否標準
m.work_time(12)
print ('m工作之後的體重:%s'%m.weight)
print(m.name)
print (m.age)
print(m.***)
python 中類繼承的super 方法
參考 python中的super 方法主要用於子類引用父類方法,因為這樣做可以提高 的復用性 usr bin env python coding utf 8 用於測試類繼承的super 方法 class a object 父類 def init self,a,b self.a a self.b b ...
python 類的繼承 super
super 函式主要是用來呼叫父類 單繼承時 在多繼承時會涉及mro順序問題。class a def init self,name print a的 init self.name name def p self print self.name class b a def init self 繼承的時...
繼承中的super使用
繼承中的super使用 特點 1 如果類中不定義 init 呼叫父類 super class的 init 2 如果類繼承父類也需要定義自己的 init 就需要在當前類的 init 呼叫一下父類 init 3 如何呼叫父類 init super init 引數 super 型別,物件 init 引數 ...