Python 无法调用获取错误列表

Python 无法调用获取错误列表,python,Python,我想从一副牌中随机取回一张牌 import itertools, random from random import randint class card: __deck = list(itertools.product(range(1,14),['s','h','d','c'])) def getCard(self): randCard = self.__deck(randint(0,52)) return randcard card = car

我想从一副牌中随机取回一张牌

import itertools, random
from random import randint
class card:
    __deck = list(itertools.product(range(1,14),['s','h','d','c']))
    def getCard(self):
        randCard = self.__deck(randint(0,52))
        return randcard
card = card()
print card.getCard()
这将返回:
TypeError:“list”对象不可调用
self.\uu组(randint(0,52))
尝试调用list
self.\uu组
,当然不可调用

要访问列表的元素,请使用以下命令:

self.__deck[randint(0,52)]

假设
return randcard
是一个打字错误,实际上应该是
return randcard

问题在于行
randCard=self.\uu deck(randint(0,52))

您所做的是使用括号而不是方括号:

randCard = self.__deck(randint(0,52))
\/
randCard = self.__deck[randint(0,52)]
第二张
randCard
中还有一个小写字母,我在下面的代码中为您修复了它。 新代码:

import itertools, random
from random import randint
class card:
    __deck = list(itertools.product(range(1,14),['s','h','d','c']))
    def getCard(self):
        randCard = self.__deck[randint(0,51)] # This line was creating the error. Also randint will return a value from 0 to 52 included so its a good idea to change it to randint(0, 51)
        return randCard
card = card()
print card.getCard()

方括号用于访问数组索引,而圆括号用于调用函数,这就是错误表明您正在尝试调用列表的原因。

此外,您返回的变量
randcard
randcard
不同……此外,您还需要
self.\uu deck[randint(0,51)]
self.\uu deck[randrange(52)]
。或者更好的
选择(self.\uu deck)
。您的卡实例不能有变量
card
,因为这会影响
card
类。您应该使用PEP-8命名约定并调用类
card
。非常感谢,我还必须删除randcard变量并直接返回语句。