gpt4 book ai didi

python - 全局范围内的描述符?

转载 作者:太空宇宙 更新时间:2023-11-04 01:42:26 25 4
gpt4 key购买 nike

descriptor protocol在 Python 2.6 中仅为类定义而定义,因此只能由实例使用。

检测 get/set 全局变量是否有一些等价物?

我正在尝试加快与主机系统交互的模块的导入,因此必须对主机执行一些昂贵的探测。 (昂贵的)探测的结果存储在导入时初始化的全局模块中;所以我试图延迟初始化,直到绝对需要。

请不要评论全局变量是邪恶的。我知道它们是什么以及何时使用它们。

我目前的计划是创建一个使用描述符的全局实例,并将我当前的所有全局变量移动到该实例的属性中。我希望这会奏效;我只是问是否有其他方法。

最佳答案

My current plan is to create a global instance that uses descriptors, and move all my current globals into the attributes of this instance. I expect this will work; I'm just asking if there's another way.

这正是我会做的。没有等同于类之外的描述符。

另一种选择,我有时也使用过,是使用函数而不是变量名,如下所示:

_expensive_to_compute = None
def get_expensive_to_compute():
global _expensive_to_compute
if _expensive_to_compute is None:
_expensive_to_compute = do_computation()
return _expensive_to_compute

如果你已经在某处定义了一个 @memoize 装饰器,你可以大大简化上面的内容。

关于python - 全局范围内的描述符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3549619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com