Глобальная переменная Python не найдена при использовании ООП

#python #oop

#python #ооп

Вопрос:

Теперь у меня проблема с глобальной переменной, которая определена, но при запуске объекта класса возникает ошибка «Переменная» не определена

В частности,

  1. Я создал файл с именем __init__.py , который содержит глобальные переменные
  2. Создайте class_0.py , содержащую функцию, которая использует определенную переменную в __init__.py
  3. Создайте class_1.py , чтобы объединить вещи, которые также запускают функцию в class_0.py

__init__.py

 asset = {'abc': 123, ...}
cost = {...}
  

class_0.py

 from __init__ import *
class defc():
    def function(self):
        a = asset['abc']
        return ...
  

class_1.py

 from __init__ import *
from class_0 import *
class run_main():
    def __init__(self):
       self.defc = defc()
    def run(self):
       self.defc.function()
  

Затем возникает ошибка

Ошибка имени: имя ‘asset’ не определено

Итак, как решить эту проблему? asset переменная представляет собой очень длинный словарь, и я не хочу помещать ее в конкретный class из-за того, что другие class используют это.

Комментарии:

1. Вы должны знать, что __init__.py это больше не требуется в python 3.3

2. @snatchysquid итак, как решить мою проблему?

3. @ShanN Ваше решение работает для меня, попробуйте его здесь . Используете ли вы новейшую версию Python 3? Или, если вы используете jupyter , попробуйте сбросить notebook.

4. В зависимости от вашего макета файла вам может потребоваться указать, что импорт является локальным, добавив точку (например from .__init__ import ... ). Кроме того, было бы лучше использовать какой-нибудь другой модуль, например constants.py , вместо __init__.py , хотя это не меняет семантику.

Ответ №1:

Сохраните всю свою работу и попробуйте перезапустить ядро.