Python—从类内部调用类内的方法

Python—从类内部调用类内的方法,python,Python,我目前正在尝试创建一段代码,它将返回一整套卡片。我试图从init()方法中调用createDeck()方法。由于某种原因,出现了一个错误。有人能解释一下这个问题的解决方案吗,或者为什么它不起作用?我试着删除这个类,并且只使用了这些方法,结果效果非常好 class FullDeck(): ''' Returns a full 52 card deck ''' names = ('Ace','One','Two','Three','Four','Five','Six'

我目前正在尝试创建一段代码,它将返回一整套卡片。我试图从init()方法中调用createDeck()方法。由于某种原因,出现了一个错误。有人能解释一下这个问题的解决方案吗,或者为什么它不起作用?我试着删除这个类,并且只使用了这些方法,结果效果非常好

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()