актуальная проблема я столкнулся намного сложнее, чем это, но это довольно много, что она сводится к:Дизайн недостаток - Пытаясь предотвратить перекрестное импорт
World.py
import Cell
worldobjects = []
for i in range(10): #create a bunch of initial cells
worldobjects.append(Cell.Cell())
while True:
for obj in worldobjects:
obj.update()
Cell.py
from World import worldobjects #This is the problem, python does not like cross imports
class Cell:
def __init__(self):
self.lifetime = 0 #Keep track of frames spent 'alive'
def update(self):
self.lifetime += 1
if self.lifetime > 30:
worldobjects.append(Cell()) #Add a new cell to the world
self.lifetime = 0 #Reset lifetime
ошибка, которая немного неспецифичны, но я знаю, что это означает, что я не должен быть кросс-импортирования материал:
ImportError: No module named worldobjects
Я знаю, что это недостаток дизайна, но я не совсем уверен, как я мог бы работать по-другому. Как видно из кода, каждая ячейка должна «воспроизводить» каждые 30 кадров, и единственный способ, которым это возможно, - добавить их в массив в файле World.py
. Я рассматривал перемещение массива worldobjects
в свой собственный файл, но для меня это немного грязно. Любой, кто мог бы помочь мне с этой проблемой?
Спасибо! Я забыл об этом и так же, как я его исправил. Kara исправил его для меня :-) – Flubber
Мое общее понимание заключается в том, что плохая форма имеет что-либо вне класса или функции, если вы планируете импортировать какой-то код.Поместите код, который создает '' 'worldobjects''' в функцию, затем вызовите эту функцию в Cell.py – wnnmaw
@wnnmaw Я понимаю, что это плохая форма, но она дала мне наименьшую головную боль при работе с Python и ее (в мое мнение) путают систему импорта. Что касается вашего решения, я предполагаю, что мне все равно придется импортировать функцию-создатель из World.py, что оставляет мне ту же проблему, что и сейчас. Или я неверно истолковал ваш ответ? – Flubber