擅长:python、mysql、java
<p>你的情况还不完全清楚,所以我要回答一个问题:“有没有办法检查类是否已经定义/存在?”</p>
<p>是的,有一些方法可以检查类是否已在当前作用域中定义。我先看几遍。</p>
<h2>一。请求原谅总比允许好</h2>
<p>试着用它!</p>
<pre><code>try:
var = MyClass()
except NameError:
# name 'MyClass' is not defined
...
</code></pre>
<p>这可能是最Pythonic的方法(除了确保您已经导入/定义了类之外)。</p>
<h2>2。透视当前范围</h2>
<p>当前作用域中的所有内容都由<code>dir()</code>给出。当然,这不能处理进口的东西!(除非直接导入。)</p>
<pre><code>if not 'MyClass' in dir():
# your class is not defined in the current scope
...
</code></pre>
<h2>三。检查模块的内容</h2>
<p>也许您想看看该类是否在特定模块<code>my_module</code>中定义。所以:</p>
<pre><code>import my_module
import inspect
if not 'MyClass' in inspect.getmembers(my_module):
# 'MyClass' does not exist in 'my_module'
...
</code></pre>
<hr/>
<p>现在,值得指出的是,如果您在生产代码中使用这些类型的东西,<em>您的代码可能写得很糟糕。您应该始终知道在任何给定点上哪些类在作用域中。毕竟,这就是为什么我们有import语句和定义。我建议你用更多的示例代码来整理你的问题,以便得到更好的回答。</p>