Python—从类内部调用类内的方法
我目前正在尝试创建一段代码,它将返回一整套卡片。我试图从init()方法中调用createDeck()方法。由于某种原因,出现了一个错误。有人能解释一下这个问题的解决方案吗,或者为什么它不起作用?我试着删除这个类,并且只使用了这些方法,结果效果非常好Python—从类内部调用类内的方法,python,Python,我目前正在尝试创建一段代码,它将返回一整套卡片。我试图从init()方法中调用createDeck()方法。由于某种原因,出现了一个错误。有人能解释一下这个问题的解决方案吗,或者为什么它不起作用?我试着删除这个类,并且只使用了这些方法,结果效果非常好 class FullDeck(): ''' Returns a full 52 card deck ''' names = ('Ace','One','Two','Three','Four','Five','Six'
class FullDeck():
'''
Returns a full 52 card deck
'''
names = ('Ace','One','Two','Three','Four','Five','Six','Seven','Eight',
'Nine','Ten','Jack','Queen','King')
suits = ('Hearts','Spades','Clubs','Diamonds')
def __init__(self):
self.deck = createDeck()
def createDeck(self):
currentDeck = []
for it1 in FullDeck.names:
for it2 in FullDeck.suits:
currentDeck.append(it1 + ' of ' + it2)
return currentDeck
正如其中一条评论所建议的,您需要使用
def __init__(self):
self.deck = self.createdeck()
与其他语言不同,Python类没有对自身的隐式引用。如果要调用同一对象上的任何方法,必须显式使用引用
self.deck = self.createDeck()
还请注意,由于该方法仅用于在对象上创建属性,因此它应该自己执行该操作
def __init__(self):
...
self.createDeck()
def createDeck(self):
currentDeck = []
...
self.deck = currentDeck
出现了什么错误?另外,您能在其中包含您称之为的代码吗?使用
self.deck=self.createDeck()
。非常感谢@ChrisP!没有意识到你在这两方面都需要自我。其他人已经回答了你的问题;但是您的方法可以简化为def createDeck(self):在FullDeck.names中为i返回[{}of{}'。格式(i,j)在FullDeck.suits中为j]
我想您的意思是第3行中的self.createDeck()