チェスボードの場合、クラスがあり、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
文自身に関連しているまでの問題を正確に特定するので、その後のインスタンスは、正常に動作します。
問題が何であるか把握するためにstacktraceを使用してください。 – postelrich
あなたがそこでそれを使用しているならば、あなたは 'board square'の' square square'から 'square import'を取得する必要があります。 – zvone