Python OOP中的封裝與容器小結

2021-08-03 23:47:35 字數 1841 閱讀 4852

從我手頭的書籍資料中並沒有封裝與容器這兩個概念的定義,我自己給總結定義如下:

封裝:設計乙個類使其能夠含有所有的類的物件的過程。

容易:封裝後的類例項化後就生成乙個容器。

之前的**中設計了撲克牌的相應描述類,具體**如下:

#!/usr/bin/python

class card:

def __init__(self,rank,suit):

self.suit = suit

self.rank = rank

self.hard,self.soft =self._points()

classnumbercard(card):

def _points(self):

returnint(self.rank),int(self.rank)

classacecard(card):

def _points(self):

return 1,11

classfacecard(card):

def _points(self):

return 10,10

class suit:

def __init__(self,name,symbol):

self.name = name

self.symbol = symbol

defcard(rank,suit):

if rank == 1:

return acecard('a',suit)

elif 2 <= rank < 11:

return numbercard(str(rank),suit)

elif rank == 11:

return facecard('j',suit)

elif rank == 12:

return facecard('q',suit)

elif rank == 13:

return facecard('k',suit)

else:

raise exception("rank out ofrange")

在此基礎上,設計封裝類如下:

club,diamond,heart,spade=suit('club','ccc'),suit('diamond','ddd'),suit('heart','hhh'),suit('spade','sss')

class deck():

def __init__(self):

self._cards = [card(rank,suit) \

for rank in range(1,14)

for suit in(club,diamond,heart,spade)]

random.shuffle(self._cards)

def pop(self):

return self._cards.pop()

這樣就可以建立並使用相應的容器,具體的示範可以如下:

d = deck()

hand =[d.pop(),d.pop(),d.pop()]

for h in hand:

print([h.rank,h.suit.name,h.hard,h.soft])

**的執行結果如下:

e:\workspace\programme_language\python\oop>python1_7_1.py

['q', 'diamond',10, 10]

['q', 'club', 10,10]

['8', 'diamond',8, 8]

從上面可以看出,通過這樣的構建已經能夠完成乙個撲克牌的隨機發牌功能了。一副撲克牌除了大小王之外的其他牌面全都可以覆蓋,功能還算是完整。

C 中的封裝與繼承

封裝 封裝指的是把類內部的資料隱藏起來,不讓物件例項直接對其進行操作。c 中提供了屬性機制來對類內部的狀態進行操作。在c 中,封裝可以通過public private protected和internal等關鍵字來體現。下面通過例子來實現以下功能,具體的方法如下 不使用封裝特性來定義乙個person...

C 中的類與封裝

c 中的類與封裝 1,類的組合 1,類不是孤立存在的,類之間都會有一些關係,組合就是類的基本關係之一 2,電腦一般而言是由 cpu 記憶體 主機板 鍵盤和硬碟等部件組合而成 3,學習電腦組裝需要多少時間?學習電腦組裝是否需要學習顯示器 鍵盤 滑鼠 主機板 記憶體等部件的設計與製造?1,我們可以使用乙...

C 中的類與封裝

1,類的組合 1,類不是孤立存在的,類之間都會有一些關係,組合就是類的基本關係之一 2,電腦一般而言是由 cpu 記憶體 主機板 鍵盤和硬碟等部件組合而成 3,學習電腦組裝需要多少時間?學習電腦組裝是否需要學習顯示器 鍵盤 滑鼠 主機板 記憶體等部件的設計與製造?1,我們可以使用乙個類,但是可能對類...