Java 使用enum在python中创建子类的新实例

Java 使用enum在python中创建子类的新实例,java,python,oop,enums,abstract-base-class,Java,Python,Oop,Enums,Abstract Base Class,我有以下Java代码,其中使用enum数据类型创建基类的实例,如下所示: 主要抽象类: public abstract class Element{ static enum elements{ quad8{Element create(){return new ElementQuad2D();}}; abstract Element create(); } public static Element newElement (String

我有以下Java代码,其中使用enum数据类型创建基类的实例,如下所示: 主要抽象类:

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 ElementQuad2D extends Element{
    public ElementQuad2D(){
    super("quad8",8,4);
    }
}

如何创建如上所述的枚举类型,以便我可以基于元素名创建不同子类的实例,如PYTHON中的“quad8”?

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

class Element: pass

class ElementQuad2D(Element): pass

mapping = {'quad8': ElementQuad2D}
obj = mapping['quad8']()
print(obj)
#  <__main__.ElementQuad2D object at 0x01D70BD0>
class元素:pass
类ElementQuad2D(元素):通过
映射={'quad8':ElementQuad2D}
obj=映射['quad8']()
打印(obj)
#  

为什么?这似乎是一个XY问题。你到底想达到什么目的?您正在尝试采用Java设计模式并将其扔给Python,可能有一种更简单的方法来实现您在这里尝试实现的任何功能。我想要实现的是,当我以名称作为参数调用方法“newElement”时,比如“quad8”,我应该能够调用子类“ElementQuad2D()”的构造函数从枚举“元素”。我目前在Python中的实现涉及到一堆if-else语句,如果我实现了许多这样的元素类型,那么这些语句就会有问题。我不想要精确的实现,但要接近这一点。