python面对对象编程------3:写集合类的三种方法
生活随笔
收集整理的這篇文章主要介紹了
python面对对象编程------3:写集合类的三种方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
寫一個集合類的三種方法:wrap,extend,invent
?
一:包裝一個集合類
class Deck:def __init__( self ):
self._cards = [card6(r+1,s) for r in range(13) for s in (Club,Diamond, Heart, Spade)] #這就是受包裝的list型數據,添加方法對其進行操作
random.shuffle( self._cards )
def pop( self ):
return self._cards.pop() #直接調用list的pop方法
d= Deck()
hand = [ d.pop(), d.pop() ] #包裝類,通過init初始數據,通過方法對其進行操作,若集合特別大而操作特別復雜時會使此類寫起來十分繁瑣。
二:繼承一個已有的集合類,此例繼承list,可以直接把下列中的self看作list進行處理,好處在于有很多方法不用自己寫了
class Deck2( list ): #有些時候需要重寫一些方法來達到更貼切的效果
def __init__( self ):
super().__init__( card6(r+1,s) for r in range(13) for s in (Club, Diamond, Heart, Spade) )
random.shuffle( self )
當有更多要求時,需要做一些自定義
class Deck3(list): #有些紙牌游戲需要多副牌才能夠完成游戲,decks表示需要的副數,而一次要發多張牌出去
def __init__(self, decks=1):
super().__init__()
for i in range(decks):
self.extend( card6(r+1,s) for r in range(13) for s in (Club, Diamond, Heart, Spade) ) #注意此地extend用法
random.shuffle( self )
burn= random.randint(1,52)
for i in range(burn):
self.pop()
?
三:自行創建
一般用不到,而且很繁瑣,有許多特殊方法需要實現
轉載于:https://www.cnblogs.com/pengsixiong/p/5381522.html
總結
以上是生活随笔為你收集整理的python面对对象编程------3:写集合类的三种方法的全部內容,希望文章能夠幫你解決所遇到的問題。