我想知道是否可以使用导入的第三方类作为相关自定义变量的命名空间?比如说,代码如下:
import pycurl
curlm = pycurl.CurlMulti()
curlm.pool = [pycurl.Curl() for i in range(POOL_SIZE)]
curlm.running = set()
在这个例子中,pycurl.CurlMulti是一些第三方类,而 pool 和正在运行是我的变量(不是由CurlMulti提供),但是打算一起使用与curlm。
答案 0 :(得分:0)
不要这样做。你想要的是WeakKeyDictionary。您可以将任意值与任意对象相关联,而无需担心不同的模块会覆盖彼此的变量或dict使对象保持活动的时间过长。
假设您编写了一个设置foo.py
的模块thing.whatever = 5
。稍后的两个Python版本thing
提供了whatever
方法。一切都破了,你甚至都没碰过你的代码。
假设您编写了一个设置foo.py
的模块thing.whatever = 5
。两个月后,您正在开发一个不同的项目,并编写了一个模块bar.py
,在同一个thing.whatever = 4
上设置thing
。由于你几个月前做出的无关决定,会发生可怕的破损。