对于国际象棋棋盘,假设有一个Board
类,其squares
属性是Square
个实例的数组。文件结构是main.py
,board.py
,square.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
语句本身相关。
答案 0 :(得分:0)
在main.py中导入两个类,但是,Board无法查看Square,反之亦然。添加" import Square"到您的Board类,并从main.py中删除它。