19、编程知识:卡片、牌组、继承及数据封装解析

编程知识:卡片、牌组、继承及数据封装解析

1. 卡片比较

对于内置类型,有像 < > == 等关系运算符来比较值,判断大小或相等关系。而对于用户自定义类型,可通过提供 __cmp__ 方法来重写内置运算符的行为。

__cmp__ 方法接收两个参数 self other ,若第一个对象大则返回正数,第二个对象大则返回负数,相等则返回 0。

卡片的正确排序并不直观,比如梅花 3 和方块 2 哪个更好,需要决定牌面等级(rank)和花色(suit)哪个更重要。为简单起见,我们规定花色更重要,即黑桃大于红桃,红桃大于方块,方块大于梅花。

以下是 __cmp__ 方法的实现:

# inside class Card:
    def __cmp__(self, other):
        # check the suits
        if self.suit > other.suit: return 1
        if self.suit < other.suit: return -1
        # suits are the same... check ranks
        if self.rank > other.rank: return 1
        if self.ran
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值