国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 詳解duck typing鴨子類型程序設計與Python的實現示例

詳解duck typing鴨子類型程序設計與Python的實現示例

2020-08-25 09:35mattkang Python

這篇文章主要介紹了詳解duck typing鴨子類型程序設計與Python的實現示例,鴨子類型特指解釋型語言中的一種編程風格,需要的朋友可以參考下

在程序設計中,鴨子類型(英語:duck typing)是動態類型的一種風格。在這種風格中,一個對象有效的語義,不是由繼承自特定的類或實現特定的接口,而是由當前方法和屬性的集合決定。
這個概念的名字來源于由James Whitcomb Riley提出的鴨子測試,“鴨子測試”可以這樣表述:
“當看到一只鳥走起來像鴨子、游泳起來像鴨子、叫起來也像鴨子,那么這只鳥就可以被稱為鴨子。”
在鴨子類型中,關注的不是對象的類型本身,而是它是如何使用的。例如,在不使用鴨子類型的語言中,我們可以編寫一個函數,它接受一個類型為鴨的對象,并調用它的走和叫方法。在使用鴨子類型的語言中,這樣的一個函數可以接受一個任意類型的對象,并調用它的走和叫方法。如果這些需要被調用的方法不存在,那么將引發一個運行時錯誤。任何擁有這樣的正確的走和叫方法的對象都可被函數接受的這種行為引出了以上表述,這種決定類型的方式因此得名。
鴨子類型通常得益于不測試方法和函數中參數的類型,而是依賴文檔、清晰的代碼和測試來確保正確使用。從靜態類型語言轉向動態類型語言的用戶通常試圖添加一些靜態的(在運行之前的)類型檢查,從而影響了鴨子類型的益處和可伸縮性,并約束了語言的動態特性。

Python代碼示例
上面這樣說可能太空洞了。比如在Python中,有很多file-like的東西,比如StringIO,GzipFile,socket。它們有很多相同的方法,我們把它們當作文件使用。
又比如list.extend()方法中,我們并不關心它的參數是不是list,只要它是可迭代的,所以它的參數可以是list/tuple/dict/字符串/生成器等.
鴨子類型在動態語言中經常使用,非常靈活,使得python不想java那樣專門去弄一大堆的設計模式。

下面例子用duck typing來實現多態。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#coding=utf-8
class Duck:
  def quack(self):
    print "Quaaaaaack!"
 
class Bird:
  def quack(self):
    print "bird imitate duck."
 
class Doge:
  def quack(self):
    print "doge imitate duck."
 
def in_the_forest(duck):
  duck.quack()
 
duck = Duck()
bird = Bird()
doge = Doge()
for x in [duck, bird, doge]:
  in_the_forest(x)

再舉個栗子,
我們來hack輸出流。

?
1
2
3
4
5
6
7
import sys
 
sys.stdout = open('stdout.log', 'a') #只要是file-like,不管是什么類型
print 'foo'
 
sys.stdout = sys.__stdout__ #恢復
print 'bar'

這樣就把輸出流給寫入到文件中去了。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 九九热在线视频 | 午夜视频在线观看网站 | 96成人爽a毛片一区二区 | 欧美日韩亚洲成人 | 免费av在线播放 | 久久久网站 | 91嫩草精品 | 欧美一级特黄aaaaaaa在线观看 | 午夜在线电影 | 国产精品久久久久久久9999 | 亚洲国产一区二区在线观看 | 亚洲午夜视频 | 国产精品伦一区二区三级视频 | 久久国产欧美日韩精品 | 色毛片 | 亚洲最新无码中文字幕久久 | 免费在线看a | 成人a级网站 | 欧美性猛交xxxx黑人猛交 | 欧美二区三区 | 成人午夜 | 精品国产子伦久久久久久小说 | 精品久久久久久久久久久久久久久久久久久 | 精品视频久久 | 免费激情网站 | 91在线视频免费观看 | 国产一区二区精品在线观看 | 国产欧美精品 | 一区视频 | 日韩在线成人av | 精品国产成人 | 欧美视频第一页 | 午夜激情视频在线观看 | h片观看| 欧美黄色一级片免费看 | 免费在线观看av片 | 日韩三级电影免费观看 | 亚洲成人一区二区三区 | 成人网视频在线观看 | 中文字幕一区二区三区不卡 | 欧美一级在线观看 |