【发布时间】:2018-01-24 22:17:06
【问题描述】:
module1 定义 function1 和 function2。 module2 使用 module1 中定义的 2 个函数,并且需要将可以描述为上下文配置参数的内容(实际上是可变自定义类的实例,而不是像字符串这样不起眼的东西)传递给它们,每个都一样在module2 内调用这些函数中的任何一个。如果我能避免使用普通的函数参数方式重复传递它,并且可以只指定一次,以便模块内调用的所有函数 (module2) 能够访问它,我将不胜感激。这在 Python 中可能吗?我使用最新的 Python 3.6。 module1 不是 3-rd 方库,也不是已建立的代码库模块,我可以在此阶段以任何必要的方式修改定义。
# --- module1.py ---
class Context:
def __init__(self, s: str):
self.s = s
def function1(cx: Context, s1: str):
print(f'{cx.s} {s1}!')
# --- module2.py ---
from module1 import Context
from module1 import function1
cx = Context('Hello')
# this works and prints 'Hello World!'
function1(cx, 'World')
# this doesn't work but I want it to work and do exactly the same
# (function1 definition can be changed whatever way necessary)
function1('World')
【问题讨论】:
-
你能显示一些代码来更清楚你的意思吗?
-
当然。也许展示你现在拥有的东西并想知道如何替换它。
-
听起来你想要动态范围,Python 不支持。你也许可以一起破解一些东西,但我怀疑,你应该重新设计这种方法,以使用一个将这个配置对象作为参数并在那里封装状态的类,而不是依赖全局变量。
-
@mkrieger1 我已经添加了代码示例
标签: python python-3.6 implicit