如何使用 eval 在其他类中创建类定义?
evalstr = str("class MyScreen(Screen):\n\tpass\n")
eval(evalstr)
我想在其他类方法中执行此代码。但它会返回一个错误。
请您参考如下方法:
改用type函数:
MyScreen = type("MyScreen", (Screen,), {})
这是在运行时创建类的正确方法(事实上本质上就是执行 class 语句所做的,因为 type 也是默认的元类在 Python 中)。
您也可以简单地以“正常”方式定义类;没有什么说 class 语句必须在模块的全局级别:
class Something(object):
# Define a new class here...
class MyScreen(Screen):
pass
def __init__(self):
"""Initialize a Something object"""
# ... or here
class MyScreen(Screen):
pass
