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

时间:2018-01-16 09:44:34

标签: java python oop enums abstract-base-class

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

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”等元素名称创建不同子类的实例?

1 个答案:

答案 0 :(得分:1)

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

class Element: pass

class ElementQuad2D(Element): pass

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