Использование класса в контексте другого модуля

Я хочу изменить некоторые классы в стандартной библиотеке, чтобы использовать другой набор глобальных переменных, аналогичный тем, которые используют другие классы в этом модуле.

Пример

Этот пример является только примером:

# module_a.py

my_global = []

class A:
    def __init__(self):
        my_global.append(self)

class B:
    def __init__(self):
        my_global.append(self)

В этом примере, если я создаю экземпляр A , через A () , он вызовет добавьте к объекту с именем my_global . Но теперь я хочу создать новый модуль, импортировать в него B и B использовать my_global из модуля, в который он был импортирован, вместо my_global из модуля B был определен изначально.

# module_b.py

from module_a import B

my_global = []

По теме

Я изо всех сил пытаюсь объяснить свою проблему, вот моя предыдущая попытка, которая на самом деле требовала чего-то совершенно другого:

Update0

  • приведенный выше пример предназначен только для иллюстрации того, чего я пытаюсь достичь.
  • Поскольку для классов нет области видимости переменных (в отличие, скажем, от C ++), я думаю, что ссылка на отображение глобальных переменных не сохраняется в классе, а вместо этого прикрепляется к каждой функции, когда она определена.

Update1

Пример был запрошен из стандартной библиотеки:

Многие (может быть, все?) Классы в модуле threading используют глобальные объекты, такие как _allocate_lock ], get_ident и _active , определенные здесь и здесь . Эти глобальные переменные нельзя изменить, не изменив их для всех классов в этом модуле.

7
задан Community 23 May 2017 в 12:03
поделиться