[英]Reference imported class from within imported class
对于棋盘,假设有一个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
语句本身相关的问题。
在 main.py 中,您导入了两个类,但是,Board 无法看到 Square,反之亦然。 将“import Square”添加到您的 Board 类,并将其从 main.py 中删除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.