Nar*_*zew 1 python oop eval kivy
我如何使用 eval 在其他类中创建类定义?
evalstr = str("class MyScreen(Screen):\n\tpass\n")
eval(evalstr)
Run Code Online (Sandbox Code Playgroud)
我想在其他类方法中执行此代码。但它返回一个错误。
改用该type函数:
MyScreen = type("MyScreen", (Screen,), {})
Run Code Online (Sandbox Code Playgroud)
这是在运行时创建类的正确方法(实际上就是执行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
Run Code Online (Sandbox Code Playgroud)