如何解决调用类时局部变量引用错误
最初,我有2个文件,一个名为“ cards”,一个名为“ deck”。卡文件包含卡类的定义,并已导入“甲板”文件中。在卡座文件中是卡座对象的定义。定义了deck对象之后,我将在下面的行中通过键入诸如“ deck = deck()”之类的内容来测试该类,然后一切正常。
验证所有内容后,我想将卡片组定义移至“ cards”文件中,以创建一个包含“ card”和“ deck”类定义的库。但是,执行此操作后,运行“ deck = deck()”失败,出现以下错误。即使我在cards文件底部运行“ deck = deck()”行,或者如果我在单独的文件中导入运行,也会发生这种情况。
import random
class card:
def __init__(self,name,suit,value):
self.name = name
self.suit = suit
self.value = value
class deck:
def __init__(self,contents = [],num_cards = 0):
self.contents = contents
self.num_cards = num_cards
self.generate()
def generate(self):
card_values = ['Ace',*range(2,11,1),'Jack','Queen','King']
suits = ['Hearts','Clubs','Diamonds','Spades']
for i in suits:
card_suit = str(i)
for n in card_values:
name_of_card = str(n) + " of " + card_suit
card = card(name = name_of_card,suit = card_suit,value = 0)
self.contents.append(card)
self.num_cards += 1
def shuffle(self):
random.shuffle(self.contents)
def print_contents(self):
for i in self.contents:
print(i.name)
def draw_card(self):
card_drawn = self.contents[0]
self.contents.pop(0)
return card_drawn
def reveal(self,num_to_reveal = 1,from_top = True):
for i in range(0,num_to_reveal,1):
if from_top == True:
print(self.contents[i].name)
else:
print(self.contents[-1-i].name)
def return_to_deck(self,card,position = 0):
self.contents.insert(position,card)
deck = deck()
解决方法
您正在为类card
和为其创建的对象使用相同的名称。如果使用其他名称,您的代码将起作用。通常,类的名称以大写字母开头,因此我建议使用class Card
,然后再建议card = Card(name=name_of_card,suit=card_suit,value = 0)
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。