【问题标题】:Return to console object attributes返回控制台对象属性
【发布时间】:2014-08-17 11:19:51
【问题描述】:
  • 我有 2 个课程 - 卡片和手牌
  • 卡片有属性:花色、等级
  • 手牌是通过在卡片上附加空列表来创建的。所以它的属性 是卡片。

需要在控制台中编写类似于:

Ace D , Queen H

我在谷歌上发现我需要对__str__(self) 方法进行仔细的修改。 我不知道如何在方法__str__(self) 中写出我的输出会像我上面提到的那样的东西。例如:

return self.hand 

执行以下操作:

[<__main__.Card object>, <__main__.Card object>]

我认为 Hand 对象就是这样的列表:

[[卡片 1],[卡片 2],..]

这是

[[套装1,等级1],[..,..],..]

但我不知道如何从列表中获取该信息。 这样写没有帮助: hand[i][0] 表示花色,hand[i][1] 表示第 i 张牌的等级 还是没搞定。这是代码:

class Card:
    def __init__(self, suit, rank):
        if (suit in SUITS) and (rank in RANKS):
            self.suit = suit
            self.rank = rank
        else:
            print "Invalid card: ", suit, rank

    def __str__(self):
        return self.suit + self.rank

class Hand:
    def __init__(self):
        self.hand = []
    def __str__(self):
        return str(self.hand)
    def add_card(self, card):
        self.hand.append(card)

创建对象卡片

c1 = Card("S", "A")
c2 = Card("C", "2")

创建对象手

test_hand = Hand()

加牌

test_hand.add_card(c1)
test_hand.add_card(c2)
print test_hand

结果是:

[<__main__.Card object>, <__main__.Card object>]

【问题讨论】:

    标签: python oop methods attributes self


    【解决方案1】:

    在 Card() 类中,您可以添加类似的 __str__() 方法

        def __str__(self):
            return "{} {}".format(self.rank, self.suit) # assuming Python2.7+
    

    现在,当您打印 Card 实例时,它将返回一个用户友好的字符串,例如 Ace D

    要为您的手部实例打印一些好东西,您可以使用.join() 字符串方法和__str__() 内部的生成器。

    def __str__(self):
        return ', '.join(str(c) for c in self.hand)
    

    现在,当您打印您的手部实例时,它将提供用户友好的输出,例如

    Ace D , Queen H
    

    了解更多关于__str__()__repr__() 的好资源是this stackoverflow question

    编辑:如果您将推荐的 __str__() 方法添加到更新的代码中,输出就是您想要的:

    A S, 2 C
    

    【讨论】:

    • 谢谢!我还有一个问题。我不确定,如果我的问题是正确的,请纠正我:这是从 Hand 类中收集有关我的 Class 实例(对象 c1,c2)的信息的唯一方法吗?并且,例如,如果我想在 Hand 类的方法中对 Card 的变量做一些事情。
    猜你喜欢
    • 2014-02-17
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    • 2021-04-09
    • 2019-05-31
    • 2017-03-31
    相关资源
    最近更新 更多