Как я могу получить константу, созданную функцией из другого модуля Python? - PullRequest
0 голосов
/ 17 июня 2020

Мне нужно создать несколько глобальных констант с фиксированными именами, примерно так:

В define.py:

class Initialize:
def __init__(self, user, pw):
    self.conn = "here I open my connection with user and pw"
    print(self.conn)
    global PI
    PI = 3.14
def __enter__(self):
    return
def __exit__(self, type, value, traceback):
    print("here I close my connection self.conn")

В main.py:

from defin import Initialize
with Initialize('username', 'password') as myconn:
    print(PI)

Но это не работает, а если я запускаю весь код в уникальном all.py, например:

class Initialize:
def __init__(self, user, pw):
    self.conn = "here I open my connection with user and pw"
    print(self.conn)
    global PI
    PI = 3.14
def __enter__(self):
    return self.conn
def __exit__(self, type, value, traceback):
    print("here I close my connection self.conn")

with Initialize('username', 'password') as myconn:
    print(PI)

, он работает. Я знаю, что глобальные переменные являются уровнями модуля, но здесь я фактически запускаю свой диспетчер контекста в основном модуле ... Очевидно, что мой реальный код более сложен, чем этот, и мне действительно нужно оставить объявление const в диспетчере контекста. Как мне получить константу в основном модуле?

...