nodeName
未知のdomsで未知のものからクラスをインスタンス化する方法を取得しようとしています(を使用せずにeval()
)。
node
a が adom node
にあると仮定して、この疑似コードのようなことをしたい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 ファイルがあります。各犬は、SuperNode の各インスタンスにすべての属性が「魔法のように」設定された、最初の dom クラスの下にある superNode のクラスになります。