Python样式:使用导入的类作为相关自定义数据的命名空间?

时间:2013-07-20 00:49:51

标签: python coding-style pep8

我想知道是否可以使用导入的第三方类作为相关自定义变量的命名空间?比如说,代码如下:

import pycurl

curlm = pycurl.CurlMulti()
curlm.pool = [pycurl.Curl() for i in range(POOL_SIZE)]
curlm.running = set()

在这个例子中,pycurl.CurlMulti是一些第三方类,而 pool 正在运行是我的变量(不是由CurlMulti提供),但是打算一起使用与curlm。

1 个答案:

答案 0 :(得分:0)

不要这样做。你想要的是WeakKeyDictionary。您可以将任意值与任意对象相关联,而无需担心不同的模块会覆盖彼此的变量或dict使对象保持活动的时间过长。

假设您编写了一个设置foo.py的模块thing.whatever = 5。稍后的两个Python版本thing提供了whatever方法。一切都破了,你甚至都没碰过你的代码。

假设您编写了一个设置foo.py的模块thing.whatever = 5。两个月后,您正在开发一个不同的项目,并编写了一个模块bar.py,在同一个thing.whatever = 4上设置thing。由于你几个月前做出的无关决定,会发生可怕的破损。