我想修改标准库中的一些类以使用该模块中其他类使用的一组不同的全局变量。
例子
这个例子只是一个例子:
# module_a.py
my_global = []
class A:
def __init__(self):
my_global.append(self)
class B:
def __init__(self):
my_global.append(self)
在这个例子中,如果我创建一个A
via的实例A()
,它将调用append
名为 by 的对象my_global
。但是现在我希望创建一个新模块,导入B
它,并从它被导入的模块中B
使用,而不是原来定义的模块。my_global
my_global
B
# module_b.py
from module_a import B
my_global = []
有关的
我正在努力解释我的问题,这是我之前的尝试,实际上确实提出了一些完全不同的问题:
更新0
- 上面的示例仅用于说明我要实现的目标。
- 由于类没有变量范围(与 C++ 不同),我认为对全局映射的引用不存储在类中,而是在定义时附加到每个函数。
更新1
向标准库请求了一个示例:
模块中的许多(也许是全部?)类threading
都使用了全局变量,例如_allocate_lock
,get_ident
和_active
, 定义的 here和here。如果不对该模块中的所有类进行更改,就无法更改这些全局变量。