首页 > 其他 > 详细

Class attributes

时间:2014-10-03 15:44:44      阅读:288      评论:0      收藏:0      [点我收藏+]

In order to print Card objects in a way that people can easily read, we need a mapping from the integer codes to the corresponding ranks and suits. A natural way to do that is with lists of strings.

class Card:
    """ represents a standard playing card.
        class attributes: suit_names, rank_names
        instance attributes: suit, rank """

    suit_names = [Clubs,Diamonds,Hearts,Spades]
    rank_names = [None,Ace,2,3,4,5,6,7,
                  8,9,10,Jack,Queen,King]
    
    def __init__(self, suit=0, rank=2):
        self.suit = suit
        self.rank = rank

    def __str__(self):
        return %s of %s % (Card.suit_names[self.suit],
                             Card.rank_names[self.rank])

bubuko.com,布布扣

Because suit_names and rank_names are defined outside of any method, they are class attributes; that is, they are associated with the class Card rather than with a particular Card instance. Attributes like suit and rank are more precisely called instance attributes because they are associated with a particular instance. Both kinds of attributes are accessed using dot notation. For example, in __str__, self is a Card object, and self.rank is its rank. Similarly, Card is a class object, and Card.rank_names is a list of strings associated with the class. Every card has its own suit and rank, but there is only one copy of suit_names and rank_names.

Finally, the expression Card.rank_names[self.rank] means ‘use the attribute rank from the object self as an index into the list rank_names from the class Card, and select the appropriate string’.

The first element of rank_names is None because there is no card with rank zero. By including None as a place-keeper, we get a mapping with the nice property that index 2 maps to the string ‘2’, and so on.

Here is a diagram that shows the Card class object and one Card instance:

bubuko.com,布布扣

                       

 from Thinking in Python

Class attributes

原文:http://www.cnblogs.com/ryansunyu/p/4004956.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!