真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

2.ADT和類(抽象數(shù)據(jù)類型和面向對象編程)-創(chuàng)新互聯(lián)

ADT:Abstrack Datatype

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設,游仙企業(yè)網(wǎng)站建設,游仙品牌網(wǎng)站建設,網(wǎng)站定制,游仙網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,游仙網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

在python里面一切都是對象


示例:

l = list()     #定義列表
l.append(3)    #調用append方法
l.remove(3)    #調用remove方法

上面示例中的列表就是一種抽象數(shù)據(jù)類型,通過組合一些現(xiàn)有的數(shù)據(jù)跟操作來形成一種新的數(shù)據(jù)結構。

用python的class實現(xiàn)抽象數(shù)據(jù)類型(ADT)


            data (數(shù)據(jù))


class

            method(操作方法)



這里實現(xiàn)一個bag來做一個示例:


     data:要用容器去存儲


bag

     method:add、remove、len、iter



代碼如下:

#-*- condig:utf-8 -*-
class Bag(object):
    def __init__(self, maxsize=10):         #初始化,maxsize定義大容量
        self.maxsize = maxsize              #屬性,表示大容量
        self._items = list()                #容器類型,這里用列表

    def add(self, item):                    #定義add操作
        if len(self) > self.maxsize:        #如果當前長度大于大定義容量
            raise Exception ('Bag is Full') #拋出異常
        self._items.append(item)            #否則添加到列表中

    def remove(self, item):                 #定義刪除操作
        self._items.remove(item)

    def __len__(self):                      #魔術方法
        return len(self._items)             #數(shù)據(jù)列表的長度

    def __iter__(self):                     #實現(xiàn)迭代器
        for item in self._items:
            yield item

#測試用例
def test_bag():
    bag = Bag()
    bag.add(1)
    bag.add(2)
    bag.add(3)

    assert len(bag) == 3

    bag.remove(3)

    assert len(bag) == 2

    for i in bag:
        print (i)
#
#
test_bag()      #調用測試函數(shù)

執(zhí)行腳本:

# python bag_adt.py


實現(xiàn)一個ADT要注意的幾個問題:

(1)數(shù)據(jù)成員,比如:items,應該選用什么樣的數(shù)據(jù)結構?

(2)選用數(shù)據(jù)結構,能否滿足定義ADT的操作要求?

     比如add,remove這些操作能否滿足要求;

(3)選用數(shù)據(jù)結構能支持高效的操作,它的效率如何?

    例如上例中容器選用list來作為他的底層存儲,實際上他的add和remove操作效率,

    不如選用set來作為容器效率更高,上例中的 remove 的操作來刪除中間的一個元素,

    它的時間復雜度就是O(n)。

    【O(n)可以簡單理解為刪除一個元素,需要執(zhí)行多少個步驟?!?/p>

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。


當前文章:2.ADT和類(抽象數(shù)據(jù)類型和面向對象編程)-創(chuàng)新互聯(lián)
轉載源于:http://weahome.cn/article/dcghcs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部