擅长:python、mysql、java
<p>我会考虑显式地建模这种模块化。您提到了OAuth2,因此为了这个示例,我假设您要添加的功能是使用该协议进行身份验证。在</p>
<p>然后你会有像这样的文件:</p>
<h3><code>authmodule.py</code></h3>
<pre><code>import oauth2client
# ...
class OAuth2Module(object):
# ...
</code></pre>
<h3><code>exampleclass.py</code></h3>
^{pr2}$
<h3><code>main.py</code></h3>
<pre><code># this is where ExampleClass is created
if use_option:
# the optional dependency only really gets pulled in here
from authmodule import AuthModule
example_obj = ExampleClass(AuthModule())
else:
example_obj = ExampleClass(None)
# ...
example_obj.foo()
</code></pre>
<p>显然,这可以有点不同的实现,比如将样板从<code>ExampleClass</code>移到<code>DummyAuthModule</code>。(由于不确定可能继承的类是如何使用的,因此无法确定是否确定。)</p>