从我手头的书籍资料中并没有封装与容器这两个概念的定义,我自己给总结定义如下:

              封装:设计一个类使其能够含有所有的类的对象的过程。

              容易:封装后的类实例化后就生成一个容器。

       之前的代码中设计了扑克牌的相应描述类,具体代码如下:

#!/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):

              = 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.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]

       从上面可以看出,通过这样的构建已经能够完成一个扑克牌的随机发牌功能了。一副扑克牌除了大小王之外的其他牌面全都可以覆盖,功能还算是完整。