理解Python 3中的类和方法

时间:2013-04-22 04:40:11

标签: python class function methods self

好的,在查看了很多关于课程的教程视频之后,我仍然无法理解他们的这项任务,我必须这样做。

我需要写一个基本上做高卡的程序,这意味着我需要面对2张牌,其中一张是西装和排名的赢家。

2-14是等级(11 =杰克,12 =女王,13 =王,14 =王牌)

1-4适合(俱乐部,钻石,心脏,黑桃)

这是我到目前为止所拥有的

    class Card:
        def __init__(self, inRank, inSuit):
        self.__rank = inRank
        self.__suit = inSuit

有人能指出我在正确的方向吗?我正在绘制如何开始这个的空白。

2 个答案:

答案 0 :(得分:1)

快速侧面说明。 Python mangles class and instance variables,其名称以两个下划线开头。我建议使用一个下划线(或者根本不使用)。

回到原来的问题。我的下一步是创建一个接受另一个卡实例的方法faceoff。此方法可以返回获胜卡,也可以返回一个布尔值,让您知道调用者是否赢了。

例如:

def faceoff(self, other):
    # Compare self against other
    # ...

    # if self beats other
        return True
    return False

答案 1 :(得分:1)

你的课很好,虽然我会删除属性中的下划线,因为你没有实现任何比较对象的方法。我将定义一个face_off函数,它将card个对象作为参数并返回获胜者。如果我理解正确,您只需比较两张卡片的rank属性并返回更高的值。然后将整个事物包裹在if __name__ == '__main__'块中。

您实际上甚至不需要课程,卡片可以是dicttuple,但是如果您想要课程,那么您可以为您的课程定义rich comparison methods,这样您就可以可以比较对象而不是属性。然后,您可以使用python的内置函数,而faceoff只能返回max(card_object_one, card_object_two)。默认情况下,这适用于dicts和元组。