【发布时间】:2018-12-31 00:09:41
【问题描述】:
我正在尝试为一个类编写一个方法,该方法将为一个已经存在的类实例创建一个新实例。问题是当我尝试 new_handname 时,我无法在控制台中访问新实例。
这是用于在 python 中创建二十一点游戏。代码的想法是,当手被拆分时,将创建一个新实例以创建新手
import random
class Card(object):
def __init__(self, value, suit,nvalue):
self.value = value
self.suit = suit
self.nvalue = nvalue
suit = ['Hearts','Spades','Clubs','Diamonds']
value = ['2','3','4','5','6','7','8','9','10','J','Q','K','A']
nvalue = [2,3,4,5,6,7,8,9,10,10,10,10,11]
class Hand(object):
def __init__(self,current_hand):
self.current_hand = current_hand
def hand_total(self):
current_sum = 0
for i in range(0,len(self.current_hand)):
current_sum += self.current_hand[i].nvalue
return current_sum
def hand_type(self):
if self.current_hand[0].value == self.current_hand[1].value:
return('pair')
elif self.current_hand[0].value == 'A' or self.current_hand[1].value == 'A':
return('soft')
else:
return('hard')
def append(self,current_hand,some_card):
self.current_hand = self.current_hand + some_card
def hit(self):
self.current_hand.append(deck[0])
deck.pop(0)
def double(self,new_handname):
new_handname = Hand(self)
def deal_start_hand():
player_hand.append(deck[0])
deck.pop(0)
dealer_hand.append(deck[0])
deck.pop(0)
player_hand.append(deck[0]) #### player gets two cards ### assuming europe no hole card rules
deck.pop(0)
def gen_deck():
for v,n in zip(value,nvalue):
for s in suit:
deck.append(Card(v,s,n))
### variable initiation ###
deck = []
player_hand = []
dealer_hand = []
##program start ##
gen_deck()
random.shuffle(deck)
deal_start_hand()
p1 = Hand(player_hand)
p1.double('p2')
p2 ### I expect p2 to return an instance but does not
>>> p1
<__main__.Hand object at 0x00000006A80F0898>
>>> p2
Traceback (most recent call last):
File "<pyshell#182>", line 1, in <module>
p2
NameError: name 'p2' is not defined
注意:current_hand 是卡片对象的列表。
我希望 p2 返回一个类的实例,但是变量 p2 没有定义
【问题讨论】:
-
return new_handname如果要返回值。但是您的代码中也确实存在其他问题... -
你还没有创建任何一个类的单个实例
-
self.new_handname = Hand(self)我认为可能会有所帮助。 -
您在哪里创建实例?您能否提供一个示例来说明如何创建实例以使您的问题更清楚。请提供一些例子
-
另外,我猜这可能是另一种编程语言(C++、Java 等)的移植
标签: python