繁体   English   中英

扫雷:Python 错误。 AttributeError: 类型对象没有属性

[英]Minesweeper: Python error. AttributeError: type object has no attribute

我对编码很陌生,并且在访问另一个对象内部的对象属性时遇到了麻烦。 我已经尝试明确创建一个方法来返回属性,但不要等待。 我似乎无法在网上找到一个好的解释。

我正在编写的代码的最终目标是模拟扫雷游戏。 为此,我创建了一个名为 minefield 的类。

class Minefield:
    def __init__(self, height, width, bombs):
        self.height = height
        self.width = width
        self.bombs = bombs
        self.flagged_amount = 0
        self.minefield = []
        self.setup_minefield()

    def setup_minefield(self):  # setup for the minefield
        for x in range(self.height):
            self.minefield.append([])
            for y in range(self.width):
                self.minefield[x].append(Cell) 

以及一个名为 Cell 的类

class Cell:
   def __init__(self):  # setup for new cell
        self.revealed = False
        self.bomb = False
        self.flag = False
        self.nearby_bombs = 0

现在,我遇到的问题是,当我尝试访问雷区中单元格的属性时,出现错误:AttributeError: type object 'Cell' has no attribute 'flag'

我现在尝试使用这些类运行的代码(导致错误)非常简单(见下文),但我将需要在程序稍后的许多计划功能中使用这些属性。

my_minefield = Minefield(5, 5, 2)
    if my_minefield.minefield[1][1].flag:
        print ("yay")

我不确定为什么这不起作用,并且非常感谢任何有助于理解该问题的帮助。 谢谢!

这里:

self.minefield[x].append(Cell) 

您正在附加Cell类,而不是它的实例。 您必须通过调用它来实例化该类:

self.minefield[x].append(Cell()) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM