2016-12-25 13 views
0

То, что я пытаюсь сделать, может быть проще объяснить на примере. Рассмотрим следующий код:Инициализация глобальных переменных с использованием импорта Python 3

В файле my_custom_module.py

def oop_type_a(): 
    __init__(self): 
    # class definitions, etc... 

def oop_type_b(): 
    __init__(self): 
    # class definitions, etc... 

def define_a_bunch_of_oop_variables(): 
    global oop1 
    global oop2 

    oop1 = oop_type_a() 
    oop2 = oop_type_b() 

Используя этот файл, я могу запустить следующие команды:

>>>import my_custom_module 
>>>my_custom_module.define_a_bunch_of_oop_variables() 
>>>from my_custom_module import * 

>>>oop1 
<my_custom_module.oop_type_a object at 0x000000000615F470> 
>>>oop2 
<my_custom_module.oop_type_a object at 0x000000000615F5C0> 

Есть ли способ, чтобы получить такую ​​же функциональность безfrom my_custom_module import *? Каков питонический способ достичь этого?

У меня есть несколько объектов, которые мне нужно инициализировать каждый раз я использовать этот модуль, и делает это утомительно:

>>>import my_custom_module 
>>>oop1 = my_custom_module.oop_type_a() 
>>>oop2 = my_custom_module.oop_type_b() 
+0

Это не Pythonic иметь модуль создания имен за пределами его собственного пространства имен. – BrenBarn

+0

Это справедливо. Является ли метод Pythonic для этого просто иметь текстовый файл команд 'oop1 = my_custom_module.oop_type_a()', которые я копирую-вставляю каждый раз, когда я использую этот модуль? –

+0

На самом деле это не общий способ программирования для определения таких глобальных переменных и использования его вне вашего модуля. Коренной причиной вашей проблемы является то, как вы организуете код и логику. –

ответ

0

Модуль используется для разделения переменных и методов. Если вы настаиваете, может быть, вы можете попробовать сделать пакет и объявить глобальные переменные в __init__.py

см это: Can I use __init__.py to define global variables?

+0

Кажется, мне все равно придется называть 'my_custom_module.oop1' этим решением. –