在 python 中使用枚举创建子类的新实例

Using enum for creating new instances of a subclass in python

我有以下 Java 代码,其中枚举数据类型用于创建基础 class 的实例,如下所示: 主要摘要 Class:

public abstract class Element{
    static enum elements{
         quad8{Element create(){return new ElementQuad2D();}};
         abstract Element create();
    }
    public static Element newElement (String name){
         el=elements.valueOf(name);
         return el.create();
    }
    public Element (String name, int nind, int nstress){
        this.name = name;
        /*Do Something Else*/
    }
}

子Class:

class ElementQuad2D extends Element{
    public ElementQuad2D(){
    super("quad8",8,4);
    }
}

如何创建如上所述的枚举类型,以便我可以根据元素名称创建不同子class的实例,例如 PYTHON 中的 "quad8"?

这可以通过从字符串到 class 的字典轻松实现。 subclasses 的使用在这里不起作用:

class Element: pass

class ElementQuad2D(Element): pass

mapping = {'quad8': ElementQuad2D}
obj = mapping['quad8']()
print(obj)
#  <__main__.ElementQuad2D object at 0x01D70BD0>