python多型例項 Python多型例項詳解

2021-10-21 05:12:53 字數 2038 閱讀 5732

[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 多型例項

coding utf 8 多型 英語 polymorphism 是指物件導向程式執行時,相同的訊息可能會送給多個不同的類之物件,而系統可依據物件所屬類,引發對應類的方法,而有不同的行為。簡單來說,所謂多型意指相同的訊息給予不同的物件會引發不同的動作稱之。在物件導向程式設計中,多型一般指子型別多型 s...

多型應用例項

主機板,主機板可以插入網絡卡。直接描述主機板以及網絡卡,並在主機板中使用該網絡卡,這樣的設計雖然當然可以應用,但缺少擴充套件性。比如又來乙個音效卡該如何呢?難道要修改主機板不成?找這些事物的共性。主機板是為了擴充套件自己的功能,而是提高後期的可維護性。先對這些板卡的共性進行抽取。定義乙個規則,這個規...

python 物件導向介紹之多型例項

一.多型 一種介面,多種實現。多型性 polymorphisn 是允許你將父物件設定成為和乙個或更多的他的子物件相等的技術,賦值之後,父物件就可以根據當前賦值給它的子物件的特性以不同的方式運作。簡單的說,就是一句話 允許將子類型別的指標賦值給父類型別的指標。那麼,多型的作用是什麼呢?我們知道,封裝可...