繁体   English   中英

从导入的类中引用导入的类

[英]Reference imported class from within imported class

对于棋盘,假设有一个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语句本身相关的问题。

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

暂无
暂无

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

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