多型(重寫,繼承)

2021-09-26 09:49:56 字數 2323 閱讀 9281

多型;同乙個事情有多種形態。同樣的方法名,完成不一樣的具體方法的實現

# 如果你的父類方法的功能不能滿足你的需求,你可以在子類重寫你父類的方法:

# 多型

class animal:

"""這是個動物"""

def __init__(self, can_fly=false):

print("呼叫 __init__() 函式當例項化時!")

self.can_fly = can_fly

def fly(self):

if self.can_fly:

print("我可以飛!")

else:

print("我不能飛!")

class bird(animal): #和class animal 對等的寫了兩個類,並沒有繼承關係

"""這是鳥類"""

def fly(self):

print("可以飛得更高!")

bird = bird()

bird.fly() # 可以飛得更高!

#以上叫做過載,

#方法重寫:

#如果你的父類方法的功能不能滿足你的需求,你可以在子類重寫你父類的方法,例項如下:

class parent: # 定義父類

def a(self):

print(『呼叫父類方法』)

class child(parent):  # 定義子類

def b(self):

print('呼叫子類方法')

c = child() # 子類例項

c.b() # 子類呼叫重寫方法 --這裡已經把父類覆蓋重寫,執行子類了

super(child, c).a() # 用子類物件呼叫父類已被覆蓋的方法 super,調出父類

「」"

super() 函式是用於呼叫父類(超類)的乙個方法。

super 是用來解決多重繼承問題的,

直接用類名呼叫父類方法在使用單繼承的時候沒問題,

但是如果使用多繼承,會涉及到查詢順序(mro)、重複呼叫(鑽石繼承)等種種問題。

「」"

#登入

class animal:

"""這是乙個動物"""

def __init__(self,name):

self.name=name

def fly(self):

print("我可以飛")

def eat(self):

print("模擬吃的方法")

a=animal("aaa")

a.name()

a.fly() #eat和fly是自己定義的函式名

a.eat() #呼叫的時候不僅可以呼叫a方法,也可以呼叫eat方法,他會自己顯示。

print(a.__doc__)

def reg():

username = input("請輸入使用者名稱[註冊]:")

password = input("請輸入密碼[註冊]:")

if check(username) >= 0:

print("你註冊的使用者名稱已經存在。")

else:

print("恭喜你,使用者名稱。")

print("恭喜你,註冊成功")

def login():

username = input("請輸入使用者名稱[登入]:")

password = input("請輸入密碼[登入]:")

index =check(username)

if index >= 0:

if password[index] == password:

print("恭喜你,登入成功。")

else:

print("抱歉,密碼輸入錯誤。")

else:

print("抱歉,登入使用者名稱不存在。")

def check(username):

for i in range(len(username)):

if username[i] == username:

return i

return -1

username = ['hello', 'woniu', 'good']

password = ['111', '222', '333']

reg()

login()

重寫前奏 繼承和多型

上次說到的過載是指同一類中方法和方法之間的關係,這次向大家介紹的重寫是子不同類中方法和方法的關係 在介紹重寫之前,要先說說繼承和多型 物件的繼承代表了 is a 的關係,a和b可以描述成b是a,就可以稱為b可以繼承a,不能相互顛倒。繼承者是被繼承者的特殊化。在繼承中,子類是派生類,父類是基類。子類不...

Python 封裝 繼承 多型 重寫

一 封裝 1 定義 根據職責將屬性和方法封裝到乙個抽象的類中。就是只能在類的內部訪問,外部訪問屬性或方法會報異常。2 實現 python中封裝很簡單,在屬性或者方法名稱前邊加上兩個下劃線就好。二 繼承 1 定義 指提供了同一類物件共性的處理方法,子類繼承父類共性的東西。有利於 的復用性。三 多型 1...

封裝繼承多型 繼承重寫過載

物件導向三大基本特徵 封裝 繼承 多型 封裝 首先封裝的意思就是將客觀事物封裝成抽象的類,封裝可以看做是乙個保護屏障,將實現細節全都隱藏起來,防止該類的 和資料被外部類定義的 隨機訪問。要訪問該類的 和資料,必須通過嚴格的介面控制。他的優點在於1.良好的封裝能夠減少耦合。2.類的內部結構可以自有修改...