Круговая зависимость в Python

A byte[] с размером максимального 32-разрядного целого числа со знаком потребует 2 ГБ смежного адресного пространства. Вы не должны пытаться создать такой массив. В противном случае, если размер на самом деле не такой большой (и это просто больший тип), вы можете смело применить его к int и использовать его для создания массива.

59
задан Ram Rachum 21 May 2009 в 20:08
поделиться

2 ответа

Импорт модулей Python - отличная статья, объясняющая циклический импорт в Python.

Самый простой способ исправить это - переместить импорт пути в конец модуля узла.

104
ответ дан 24 November 2019 в 17:12
поделиться

Вы, возможно, не должны импортировать Path в node.py для Path и Node для использования друг друга.

# in __init__.py  (The order of imports should not matter.)
from .node import Node
from .path import Path

# in path.py 
from . import Node
class Path
  ...

  def return_something_pathy(self): 
    ...

# in node.py
class Node
  def __init__(self, path): 
    self.path = path
    ...

  def a_node_method():
    print(self.path.return_something_pathy())

, Чтобы прояснить, что Node использует Path, добавьте вывод подсказок типа. Существует функция доступный запуск с Python 3.7 поддерживать ссылки вперед в аннотациях типа, описанных в PEP 563.

# in node.py  (Now with type hinting.)
from __future__ import annotations

class Node
  def __init__(self, path: Path): 
    self.path = path
    ...

  def a_node_method():
    print(self.path.return_something_pathy())

я столкнулся с еще одним решением вырыть, Вы из круговой дыры импорта в Python - большое сообщение в блоге, которое преподавало мне это.

0
ответ дан 24 November 2019 в 17:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: