Класс Python, определенный в том же файле, что и другой класс, – как вы получаете доступ к тому, который указан позже в файле?

Я очень новичок в Python, я считаю, что этот вопрос должен быть легко ответить.

Моя проблема упрощена …

  • Преобразование времени и времени с учетом часовых поясов в локальное время в Python
  • Первоначальная миграция Alembic - sqlalchemy
  • Что я должен использовать вместо syncdb в Django 1.9?
  • Как заставить Django игнорировать любые кеши и перезагружать данные?
  • Проблема с доступом к загруженному пользователю видео во временную память
  • Перенос Django 1.7 не воссоздает упавшую таблицу, почему?
  • У меня есть 2 класса в классе A и классе B. Класс A определяется сначала в файле, а класс B определяется вторым.

    class A ... class B ... 

    Как получить доступ к классу B с классом A?

     class A something = B class B somethingElse = A 

    Вот фактический код, который я пытаюсь исправить

     class FirstResource(_ModelResource): class Meta(_Meta): queryset = First.objects.all() resource_name = 'first' allowed_methods = ['get','put'] filtering = { 'a': ALL_WITH_RELATIONS, 'b': ALL_WITH_RELATIONS, 'c': ALL_WITH_RELATIONS, } ordering = ['apt'] # this is the line that would fix everything second = fields.ForeignKey(SecondResource, 'second', null=True, blank=True, default=None, full=True) ... class SecondResource(_ModelResource): class Meta(_Meta): queryset = Second.objects.all() resource_name = 'second' execute_methods = ['get', 'post'] filtering = { 'name': ['exact'], 'leader': ['exact'], } super = fields.ForeignKey(FirstResource, 'super', null=True, blank=True, default=None, full=True) leader = fields.ForeignKey(FirstResource, 'leader', null=True, blank=True, default=None, full=True) ... 

    Без предварительного объявления в Python я действительно не уверен, как решить эту проблему. Первый в models.py имеет ForeignKey of Second, а Second имеет 2 внешних ключа First.

    Перемещение A ниже B не решает проблему, так как B также нуждается в A. Я не писал код, который я просто пытаюсь исправить – мне нужен «второй» внешний ключ, когда я делаю «get» для ресурса в обоих классах.

  • Как перейти прямо к шаблону, в urls.py Django?
  • Каков наиболее эффективный способ хранения списка в моделях Django?
  • SyntaxError с VirtualEnv + mod-wsgi в Django
  • Как обрабатывать загрузку файлов через запрос PUT в Django?
  • Панель инструментов Django Debug: понимание временной панели
  • Распределенные очереди задач (пример Celery) и скрипты crontab
  • 4 Solutions collect form web for “Класс Python, определенный в том же файле, что и другой класс, – как вы получаете доступ к тому, который указан позже в файле?”

    Чтобы получить доступ к B , вы должны сначала определить B

    Если вы хотите получить доступ к B при определении A , вам нужно переместить его выше A в файл.

    Если вы хотите получить доступ к B при вызове методов в A , вам не нужно ничего делать: к моменту вызова метода A интерпретатор выполнил все определения.

    Когда python находит объявление класса, он создает новую область и выполняет код внутри класса в этом кодовом блоке. Это означает, что все переменные класса создаются при объявлении класса.

    Теперь, если у вас есть два класса:

     class A: something = B class B: pass 

    Python выполнит something = B перед созданием класса B и, таким образом, даст значение NameError .

    Вы можете избежать этого очень просто:

     class A: something = None class B: pass A.something = B 
     class A: def __init__(self): print "In A" class B: def __init__(self): a = A() print "In B" b = B() 

    Я думаю, ты хочешь чего-то подобного.

    Таким образом, ответ заключался в использовании qoutes

     B = fields.ForeignKey('api.resources.B', 'B') 
    Python - лучший язык программирования в мире.