第一章 python数据模型:总结

  1. 自定义排序
import collections

Card = collections.namedtuple('Card',['rank','suit'])

class FrenchDeck:
    # list类型
    ranks = [str(n)for n in range(2,11)]+list('JQKA')
    suits = '黑桃 方块 梅花 红心'.split()
    def __init__(self):
        self._cards =[Card(rank,suit)for suit in self.suits
                      for rank in self.ranks]
    def __len__(self):
        return (len(self._cards))
    def __getitem__(self, position):
        return self._cards[position]

suits_values = dict(黑桃=3,方块=2,梅花=1,红心=0)
def spades_high(card):
    rank_value = FrenchDeck.ranks.index(card.rank)
    b = suits_values[card.suit]
    a = rank_value * len(suits_values) + suits_values[card.suit]
    return b


def main():
    desk = FrenchDeck()
    for card in sorted(desk,key=spades_high):
        print(card)
if __name__ == "__main__":
    main()

小结:

__getitem__ 方法 :用于列表的索引/切片

__contains__ 方法:用于in运算符


2.字符串表示形式

(1)__repr__ 和__str__的区别

            __str__: print,面向用户

            __repr__ : 命令行 打印对象,面向程序员

            如果你指向实现这两个特殊方法中的一个,推荐__repr__

(2)自定义布尔值

        重写__bool__方法即可

特殊方法总揽:https://docs.python.org/3/reference/datamodel.html

猜你喜欢

转载自blog.csdn.net/guxingming/article/details/80014192