动态创建类型为 (Python) 的 类 时发生元类冲突

metaclass conflict upon dynamically creating classes with type (Python)

以下代码的目的是根据用户的输入动态创建class。

class BaseClass:
    def __init__(self):
        self.placeholder = ""


if __name__ == '__main__':
    className = input("Please enter the name of new class: ")
    baseClass = input("Please enter name of base class: ")
    try:
        newClass = type(className, tuple(baseClass), {})
        print(f"Class {newClass} Created")
    except TypeError as e:
        print(e)

然而,输入后:

NewClass
BaseClass

我收到以下异常:

metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases

为什么程序无法识别 class BaseClasstype 函数的正确用法是什么?

注:我是运行pythonv3.9.6.

示例程序输出片段:

基数必须是 class 而不是字符串,因此您需要从字符串名称中获取 class:

class BaseClass:
    def __init__(self):
        self.placeholder = ""


if __name__ == '__main__':
    #className = input("Please enter the name of new class: ")
    #baseClass = input("Please enter name of base class: ")

    className = 'Foo'
    baseClass = 'BaseClass'

    baseClassObj = globals().get(baseClass, None)
    if baseClassObj:
        newClass = type(className, (baseClassObj, ), dict())
        print(f"Class {newClass} Created")
    else:
        print('baseClass not found!')

输出:

Class <class '__main__.Foo'> Created