`AttributeError`试图访问同一类(python)中的2d列表时
我的程序代码如下: 我得到的错误如下:`AttributeError`试图访问同一类(python)中的2d列表时,python,Python,我的程序代码如下: 我得到的错误如下: Traceback (most recent call last): File "sudoku_maker.py", line 51, in <module> p.main() File "sudoku_maker.py", line 44, in main self.createEasy() File "sudoku_maker.py", line 16, in createEasy if (self.pu
Traceback (most recent call last):
File "sudoku_maker.py", line 51, in <module>
p.main()
File "sudoku_maker.py", line 44, in main
self.createEasy()
File "sudoku_maker.py", line 16, in createEasy
if (self.puzzle[i][j] != 0):
AttributeError: 'Puzzle' object has no attribute 'puzzle'
回溯(最近一次呼叫最后一次):
文件“sudoku_maker.py”,第51行,在
p、 main()
文件“sudoku_maker.py”,第44行,主目录
self.createEasy()
createEasy中第16行的文件“sudoku_maker.py”
如果(self.puzzle[i][j]!=0):
AttributeError:“Puzzle”对象没有属性“Puzzle”
我能理解为什么会发生这个错误的唯一原因是因为列表只在init函数中声明,但我把它放在那里,因为我在这里看到了另一个答案,它说这样做。我本想对回答进行评论,问如何对类变量执行此操作,但我没有足够的代表性,然后我发现另一个问题,回答者说只在init函数中声明一个列表。为什么你没有初始化
puzzle
作为实例变量?实际上,它只是一个局部变量。您需要:
def __init__(self, **puzzle):
self.puzzle = [[0 for x in range(9)]for y in range(9)]
self
是您的实例,self.x=…
将产生x
,这是一个实例变量,可以作为self
的属性访问。您还需要在\uuu init\uuu
中调用它self.puzzle
。这不是魔术,因为我不知道你现在必须这样写,我想我终于完全明白了。“self”在某种程度上相当于关键字“this”。我希望我看到的关于涉及类变量的问题的其他答案能够解释清楚。@codehelp4。它不是“像”这个
,而是这个
。干杯。尽管如此,我仍然感到惊讶,因为这是第一次申报,所以你不得不写下它。无需再次表示感谢。@codehelp4您不想违背自己的意愿声明局部变量并将其指定为属性变量,对吗?记住,显式总是比隐式好(Python的Zen)。