麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Python > 正文

Python中的函數(shù)式編程:不可變的數(shù)據(jù)結(jié)構(gòu)

2020-02-15 23:06:59
字體:
供稿:網(wǎng)友

讓我們首先考慮正方形和長方形。如果我們認為在接口方面,忽略了實現(xiàn)細節(jié),方塊是否是矩形的子類型?

子類型的定義取決于Liskov代換原理。為了成為一個子類型,它必須能夠完成超級類型所做的一切。

如何定義矩形的接口?

zope.interface import Interfaceclass IRectangleInterface:get_length:"""Squares can do that"""get_width:"""Squares can do that"""set_dimensions length width:"""Uh oh"""

如果這是定義,則方塊不能是矩形的子類型;它們不能響應set_dimensions方法,如果長度和寬度不同。

另一種方法是選擇制作矩形。不變.

class IRectangleInterface:get_length:"""Squares can do that"""get_width:"""Squares can do that"""with_dimensions length width:"""Returns a new rectangle"""

現(xiàn)在,一個正方形可以是一個矩形。它可以返回一個新的矩形(通常不是正方形)with_dimensions被稱為,但它不會停止成為一個正方形。

這似乎是一個學術(shù)問題-直到我們考慮到,從某種意義上說,正方形和長方形是它們兩邊的容器。在我們理解了這個例子之后,更實際的情況是使用更傳統(tǒng)的容器。例如,考慮隨機訪問數(shù)組.

我們有ISquare和IRectangle,和ISquare是IRectangle.

我們希望在隨機訪問數(shù)組中放置矩形:

class IArrayOfRectanglesInterface:get_element i:"""Returns Rectangle"""set_element i rectangle:"""'rectangle' can be any IRectangle"""

我們也想把正方形放在一個隨機存取數(shù)組中:

class IArrayOfSquareInterface:get_element i:"""Returns Square"""set_element i square:"""'square' can be any ISquare"""

即使ISquare是IRectangle,任何數(shù)組都不能實現(xiàn)這兩者。IArrayOfSquare和IArrayOfRectangle.

為什么不行?假設bucket實現(xiàn)兩者。

>>> rectangle make_rectangle >>> bucket.set_element rectangle # This is allowed by IArrayOfRectangle>>> thing bucket.get_element # That has to be a square by IArrayOfSquare>>> assert thing.height thing.widthTraceback most recent call last:File "<stdin>" line moduleAssertionError

兩者都不能實現(xiàn),這意味著兩者都不是另一種類型的子類型,盡管ISquare是IRectangle。問題是set_element方法:如果我們有一個只讀數(shù)組,IArrayOfSquare的子類型IArrayOfRectangle.

可變性,都是可變的。IRectangle接口和可變IArrayOf接口使得對類型和子類型的思考變得更加困難-而放棄的能力意味著我們期望類型之間的直觀關(guān)系實際上仍然有效。

突變也可以非局部效果。當兩個地方之間的共享對象被一個突變時,就會發(fā)生這種情況。典型的例子是一個線程與另一個線程交互一個共享對象,但是即使在一個單線程程序中,在相距很遠的地方之間共享也很容易。考慮到在Python中,大多數(shù)對象都可以從許多地方訪問:作為一個模塊全局,或者在堆棧跟蹤中,或者作為一個類屬性。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: xxxxhdhdhdhd日本 | 国产91中文字幕 | 日本一区二区不卡高清 | 茄子福利视频 | 黄色影院一级片 | 欧美一级特黄aaaaaaa什 | 欧美电影在线观看 | 97porn| 成人一级黄色大片 | 一二区成人影院电影网 | 久久人人av | 最近日本电影hd免费观看 | 中文字幕在线播放一区 | 日韩视频不卡 | 久久久中精品2020中文 | 香蕉国产片 | 久久久在线免费观看 | 亚洲精品有限 | 视频毛片 | 男女牲高爱潮免费视频男女 | 毛片在线免费观看视频 | 黄色片网站免费观看 | 亚洲成人久久精品 | www.成人精品 | 久久经典 | 国产一区二区三区四 | 日韩不卡一区二区 | 精品国产96亚洲一区二区三区 | 中文字幕在线观看成人 | hd极品free性xxx一护士 | 最近中文字幕一区二区 | 国产性tv国产精品 | 久草导航 | 国产精品一品二区三区四区18 | 午夜在线视频一区二区三区 | 5a级毛片| 中国的免费的视频 | 激情小说激情图片激情电影 | 久久久久亚洲a | 黄网站免费在线看 | 久久国产精品久久久久久 |