我试图找到一种方法来从未知nodeName
领域中的未知实例化一个类(不使用eval()
)。
我想做类似这样的伪代码假设node
是 adom node
在 a 中dom tree
:
# create dom and get a node
class SuperNode(node):
def __init__(self):
# do narly node stuff
但我想根据节点名称创建类,这将是未知的。
makeInstance(SuperNode, node.nodeName, node)
为了澄清, node.nodeName 是我想成为实例变量名的节点的名称。因此,如果node.nodeName = 'clarence'
它像这样实例化它(我会担心稍后按字母顺序排列节点名称以符合类命名):
clarence = SuperNode(node) ''' where node is the node specified
by the name clarence'''
如果名称已知,构造函数将是这样的:
makeInstance(SuperNode, 'clarence', node) ''' where clarance will be the
instantiated variable of
class SuperNode'''
这类似于使用 setattrib 设置属性:
setattr(class instance, attribute, value)
其中属性可以在变量中定义。
如果存在如何访问这些名称的问题,它们将在另一个类中定义,然后可以检查整个 dom。
有没有办法做到这一点?
一个例子是狗的 XML 文件,包括狗名、品种、生日等元素。每只狗将是我的初始 dom 类下的一个超节点类,所有属性“神奇地”设置在每个超节点实例中