Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中创建列表对象_Python - Fatal编程技术网

在Python中创建列表对象

在Python中创建列表对象,python,Python,我有一个对象列表(这是一个游戏),我想让列表本身成为一个对象 第一个对象是卡片: 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

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

第一个对象是卡片:

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()中,我遇到了麻烦

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
我有列表,我把牌组中的每一张牌都做成一个卡片对象。然后我将它们传递到名为list1和list2的人手中(对于每个玩家,为了简单起见,我只处理list1)

一旦我把每个玩家的牌都放到他们的名单上。我尝试将列表放入hand对象,然后对其运行
handpointvalue
函数

所以

这就是我遇到麻烦的地方。我尝试过多种方法,最近的一种是:

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

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

首先,切勿使用内置关键字作为变量名称(例如
列表
)。 其次,
hand.hand_值
有一个udefined变量(
handpointvalue
),应该不起作用。第三,您甚至没有调用
hand.hand\u value()


首先,切勿使用内置关键字作为变量名称(例如
列表
)。 其次,
hand.hand_值
有一个udefined变量(
handpointvalue
),应该不起作用。第三,您甚至没有调用
hand.hand\u value()


由于您没有发布任何回溯或代码,因此我敢打赌您的问题有三个方面: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

由于您没有发布任何回溯或代码,因此我敢打赌您的问题有三个方面: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
问题是您应该以类hand或其他方式初始化handpointvalue


问题是你应该用类hand或其他方式初始化handpointvalue,对了,我知道这个列表永远不应该被使用,实际上就是为了这个。所以在开始遍历列表(应该称为hand)之前,我应该使handpointvalue=0,但是,这并不是我真正遇到的问题。发生的情况是,我得到了一个类型错误,即对象不可iterable。“对象不可iterable”错误仅仅意味着您试图在一个对象上迭代,而该对象没有实现
\uuuuIter\uuIter()
方法。例如,10中x的
将引发该错误,因为整数不能实现该错误。另一方面,范围(10)内的x的
工作正常,因为列表是可编辑的(实现
\uuuu iter\uuuu()
)。请参阅@user1887945这些卡存储在
self.list\u cards
中,但是您迭代了
list
(这是内置列表的类对象)-这会产生一个类型错误,因为类通常是不可编辑的。是的,我知道永远不应该使用列表,实际上正是为了这个目的。所以在开始遍历列表(应该称为hand)之前,我应该使handpointvalue=0,但是,这并不是我真正遇到的问题。发生的情况是,我得到了一个类型错误,即对象不可iterable。“对象不可iterable”错误仅仅意味着您试图在一个对象上迭代,而该对象没有实现
\uuuuIter\uuIter()
方法。例如,10中x的
将引发该错误,因为整数不能实现该错误。另一方面,范围(10)内的x的
工作正常,因为列表是可编辑的(实现
\uuuu iter\uuuu()
)。请参见@user1887945这些卡存储在
self.list\u cards
中,但您在
list
上迭代(这是内置列表的类对象)-这会导致类型错误,因为类通常不可编辑。点值应该是函数的局部值,而不是成员变量(调用函数两次,第二个结果将是第一个结果的两倍)。此外,它可能是一个整数值,而不是一个字符串……而且您没有看到实际问题,即他没有调用正确的函数。点值应该是函数的局部值,而不是成员变量(调用函数两次,第二个结果将是第一个结果的两倍)。此外,它可能是一个整数值,而不是字符串……您没有看到实际问题,即他没有调用正确的函数。
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