【问题标题】:Understanding Classes and Methods in Python 3了解 Python 3 中的类和方法
【发布时间】:2013-04-22 04:40:11
【问题描述】:

好吧,在观看了很多关于课程的教程视频后,我仍然无法理解我必须完成的作业。

我需要编写一个本质上是做高牌的程序,这意味着我需要两张牌来对抗,一张是花色和排名的赢家。

2-14 是排名(11=jack,12=queen,13=king,14=ace)

1-4 花色(梅花、方块、红心、黑桃)

这是我目前所拥有的

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

有人可以在这里指出我正确的方向吗?我正在讨论如何开始。

【问题讨论】:

  • 用伪代码或英语写下你如何决定两张卡中哪一张更好。然后翻译成python。
  • 作为旁注,您的缩进不正确(除非它在粘贴中出错)。

标签: python class function methods self


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    只是一个简短的旁注。 Python mangles class and instance variables,其名称以两个下划线开头。我建议使用一个下划线(或根本不使用)。

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

    例如:

    def faceoff(self, other):
        # Compare self against other
        # ...
    
        # if self beats other
            return True
        return False
    

    【讨论】:

      猜你喜欢
      • 2016-02-10
      • 2017-03-13
      • 1970-01-01
      • 2013-10-27
      • 2012-04-11
      • 2015-02-24
      • 2011-06-15
      • 1970-01-01
      • 2017-01-23
      相关资源
      最近更新 更多