在 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>
我有以下 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>