从导入的类

时间:2016-09-29 23:00:24

标签: python class namespaces python-import

对于国际象棋棋盘,假设有一个Board类,其squares属性是Square个实例的数组。文件结构是main.pyboard.pysquare.py和空__init__.py(我不得不说我不完全理解后者的目的。 ..但显然这是做事的方式)。这些都在同一目录中。 (我之前没有在涉及多个文件的Python中做过任何事情。)

main.py中,我想实例化一个Board对象。这是main.py

的内容
from board import Board
from square import Square

board = Board()

这里是square.py

class Square:
    def __init__(self):
        pass
        #this class doesn't do anything yet

这里是board.py

class Board:
    row_count = 8
    column_count = 8

    def __init__(self):
        self.squares = self.generate_squares()

    def generate_squares(self):
        squares = {}
        for i in range(0, self.row_count * self.column_count):
            squares[i] = Square()
        return squares

然而,当我运行main.py时,我被告知squares[i] = Square()行有错误;即NameError: global name 'Square' is not defined

我尝试将其更改为squares[i] = square.Square(),但会产生相同的错误。

如果我删除import语句并将类定义复制到main.py,则实例化工作正常,以便将问题精确定位为与import语句本身相关。

1 个答案:

答案 0 :(得分:0)

在main.py中导入两个类,但是,Board无法查看Square,反之亦然。添加" import Square"到您的Board类,并从main.py中删除它。