Проблема заключается линией randCard = self.__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 .__ deck [randint (0,51)]' или 'self .__ deck [randrange (randrange) 52)] '. Или даже лучший 'choice (self .__ deck)'. –
И вы не можете иметь переменную 'card' для вашего экземпляра карты, потому что это clobbers ваш класс' card'. Вы должны использовать соглашения об именах PEP-8 и вызвать класс 'Card'. –