0

我有一个对象列表(这是一个游戏),我想让列表本身成为一个对象。

第一个对象是卡片:

class card (object):
    def __init__ (self,suit,value):
        self.suit = suit
        self.value = value


    def cardpointvalue(self):
    #not relevant, basically says if card is this return this value for it
    # there is also a __str__ function and a ___repr___ function, don't think
    # they are important

这就是我的卡片对象,我也有一个手对象,这是我遇到问题的地方。

class hand (object):
    def __init__ (self,list_cards):
         self.list_cards = list_cards

    def hand_value (self):
        for i in list:
           handpointvalue += (i.cardpointvalue())
        return handpointvalue

在我的 main() 中,这是我遇到麻烦的地方。

我有列表,我将卡片组中的每张卡片都变成卡片对象。然后我将它们传递到名为 list1 和 list2 的人手中(对于每个玩家,为简单起见,我将只处理 list1)。

一旦我将每个玩家的卡片传递到他们的列表中。我尝试将列表放入手对象,然后handpointvalue在它们上运行函数。

所以

for i in range(10):
    one_card = card_deck.pop(0) #each card is an object at this point
   list1.append(one_card)

print (list1) #just testing, get a list of each card object

这是我遇到麻烦的地方。我尝试了多种方法,最新的是:

hand(list1)
print (list1.handpointvalue())

为什么这不起作用?如何将此对象列表变成对象本身?

4

3 回答 3

3

首先,永远不要使用内置关键字作为变量名(例如list)。其次,hand.hand_value有一个未定义的变量 ( handpointvalue) 并且不应该工作。第三,您甚至没有调用hand.hand_value()

print (list1.handpointvalue())
于 2012-12-08T15:57:07.637 回答
1

由于您没有发布任何有理由工作的回溯或代码,我敢打赌您的问题是 3 倍:1)您没有向我们提供名为 handpointvalue 的方法 2)您不是使用 self 获取对象属性,以及 3)您似乎不了解构造函数的工作原理。

鉴于描述,这就是我认为您正在尝试做的事情:

cards = [card_deck.pop(0) for i in range(10)]

class Hand(object):
    def __init__(self, cards):
        self.cards = cards
    def handpointvalue(self):
        return sum([c.cardpointvalue() for c in self.cards])

hand = Hand(cards)
v = hand.handpointvalue() 
# v will now be some number, assuming you've implemented cardpointvalue correctly
于 2012-12-08T15:59:25.117 回答
-1
class hand (object):
    def __init__ (self,list_cards):
       self.list_cards = list_cards
       self.handpointvalue = ""

    def hand_value (self):
        for i in list:
            self.handpointvalue += (i.cardpointvalue())
        return self.handpointvalue

问题是你应该用类手或其他方式初始化手点值

于 2012-12-08T16:02:11.063 回答