python 多型例項
# coding:utf-8
多型(英語:polymorphism),是指物件導向程式執行時,相同的訊息可能會送給多個不同的類之物件,
而系統可依據物件所屬類,引發對應類的方法,而有不同的行為。
簡單來說,所謂多型意指相同的訊息給予不同的物件會引發不同的動作稱之。
在物件導向程式設計中,多型一般指子型別多型(subtype polymorphism)。
上面的定義有點讓初學者費解,黃哥用「開啟」這個動作來描述物件導向的多型。
"開啟",可以是開啟門,開啟窗戶,開啟書等等。"開啟"這個動作,碰到不同的物件門,窗戶,書,有不同的行為模式。
這個就是多型。
本文由黃哥python培訓,黃哥所寫
# 例1
class door(object):
def open(self):
print "開啟門"
class windows(object):
def open(self):
print "開啟窗戶"
class book(object):
def open(self):
print "開啟書"
lst = [door(), windows(), book()]
for item in lst:
item.open()
# 例2 一般用繼承來說明多型的例子
class animal:
def __init__(self, name):
self.name = name
def talk(self):
raise notimplementederror("subclass must implement abstract method")
class cat(animal):
def talk(self):
return 'meow!'
class dog(animal):
def talk(self):
return 'woof! woof!'
animals = [cat('missy'),
cat('mr. mistoffelees'),
dog('lassie')]
for animal in animals:
print animal.name + ': ' + animal.talk()
# 例3 python 內建有很多多型的應用
# 同樣的 +號 可以用在不同的物件相加,體現(相仿:指相加這個事情)了多型的功能。
print 1 + 2
print "hello" + '黃哥'
# len 函式傳不同的引數,也體現了多型的功能。
print len("黃哥python培訓")
print len([2, 4, 5, 7])
# 工程應用
# 乙個簡單的日誌記錄函式,用判斷實現的,重構為物件導向多型來實現。
#如果有大量的判斷語句,就可以用多型來實現。
def log_msg(log_type):
msg = 'operation successful'
if log_type == 'file':
log_file.write(msg)
elif log_type == 'database':
cursor.execute('insert into log_table (msg) values ('?')', msg)
#重構class filelogger(object):
def log(self, msg):
log_file.write(msg)
class dblogger(object):
def log(self, msg):
cursor.execute('insert into log_table (msg) values ('?')', msg)
def log_msg(obj):
msg = 'operation successful'
obj.log(msg)
python有多型嗎 Python 多型
python多型 思維導圖 多型概念 一種事物具備多種 不同的形態 例如 水 固態 液態 氣態 官方解釋 多個不同類的物件可以響應同乙個方法,產生不同的結果 首先強調多型不是一種特殊的語法,而是一種狀態 特性 即多個不同物件可以響應同乙個方法,產生不同結果 好處 對於使用者而言,大大的降低了使用難度...
python 多型性 Python 多型
返回python教程首頁 多型介紹多型之前,我們先看看什麼叫方法重寫。方法重寫 子類繼承父類,會繼承父類的所有方法,當父類方法無法滿足需求,可在子類中定義乙個同名方法覆蓋父類的方法,這就叫方法重寫。當子類的例項呼叫該方法時,優先呼叫子類自身定義的方法,因為它被重寫了。例如 class people ...
python 多型應用 Python多型原理及實現
對於弱型別的語言來說,變數並沒有宣告型別,因此同乙個變數完全可以在不同的時間引用不同的物件。當同乙個變數在呼叫同乙個方法時,完全可能呈現出多種行為 具體呈現出哪種行為由該變數所引用的物件來決定 這就是所謂的多型 polymorphism 先看下面程式 class bird def move self...