擅长:python、mysql、java
<p>这是python中为数不多的几种情况之一,我认为单例设计模式可能很有用,可以作为一种有选择地将全局变量保存在内存中的机制。例如,代替</p>
<pre><code>import postgresLibrary
import mysqlLibrary
</code></pre>
<p>您可以创建一个类来跟踪当前导入的模块,并且只有<em>尝试</em>在第一次使用它们时导入它们。例如,文件<code>singleton.py</code>:</p>
<pre><code>class SingletonBase:
def __init__(self):
self._modules = {}
def __getattr__(self, module_name):
if not module_name in self._modules:
self._modules[module_name] = __import__(module_name)
return self._modules[module_name]
Singleton = SingletonBase()
</code></pre>
<p>然后,您可以在本地使用<code>postgresLibrary</code>,方法是按照</p>
<pre><code>from singleton import Singleton as S
...
postgresLibrary = S.postgresLibrary.PostgresConnection()
</code></pre>