Python-检查类是否存在

Oll*_*lie 2 python if-statement class while-loop

有没有一种方法可以检查一个类是否已定义/存在?我在菜单上有不同的选项,其中一些需要继承的变量,因此,如果您在设置变量之前尝试选择该函数,则会崩溃。我的课称为Gen0,我通过简单地将其开始

class Gen0():
Run Code Online (Sandbox Code Playgroud)

其余的代码后面设置变量。对于上下文,我正在进行总体模型,因此需要在显示(选项2),使用(选项3)或导出(选项4)之前设置初始值(选项1)。

Pie*_*agh 5

您的情况尚不完全清楚,因此我将回答“是否有方法检查是否定义/存在某个类?”的问题。

是的,有多种方法可以检查当前范围内是否已定义类。我会讲几个。

1.宽恕胜过许可

只是尝试使用它!

try:
    var = MyClass()
except NameError:
    # name 'MyClass' is not defined
    ...
Run Code Online (Sandbox Code Playgroud)

这可能是最Pythonic的方法(除了确保已导入/定义了类之外)。

2.浏览当前范围

当前范围内的所有内容均由给出dir()。当然,这不会处理导入的内容!(除非它们是直接导入的。)

if not 'MyClass' in dir():
    # your class is not defined in the current scope
    ...
Run Code Online (Sandbox Code Playgroud)

3.检查模块的内容

也许您想查看该类是否在特定模块中定义my_module。所以:

import my_module
import inspect

if not 'MyClass' in inspect.getmembers(my_module):
    # 'MyClass' does not exist in 'my_module'
    ...
Run Code Online (Sandbox Code Playgroud)

现在,值得指出的是,如果您在生产代码中随时使用这些东西,那么您的代码编写可能很糟糕。您应该始终知道在任何给定点范围内的类。毕竟,这就是我们拥有导入语句和定义的原因。我建议您使用更多示例代码来整理问题,以获得更好的答复。