2

したがって、ドキュメントにはNodeクラスのノードタイプのリストがあることに気付きましたが、ざっと見てみるnodeTypeと、特定のNodeオブジェクトで使用可能なのリストをプログラムで取得する方法を見つけることができないようです(クラスを検査する以外に) 、「NODE」で終わる名前を持つすべての大文字のメンバーをすべてプルしてから、値で並べ替えます)。これを行う方法はありますか?

4

1 に答える 1

1

もっと良いものがあればいいのにと思いますが、それが足りないので、新しいモジュールを作成しました。

from xml.dom import Node
from collections import OrderedDict

if not hasattr(Node, 'get_all_node_types'):

    @classmethod
    def get_all_node_types(cls, refresh=False):

        if not hasattr(cls, '_type_dict') or refresh:
            unsorted_types = {getattr(cls, name) : name for name in dir(cls) if name.endswith('_NODE')}
            cls._type_dict = OrderedDict(sorted(unsorted_types.items(), key = lambda t : t[0]))
        return cls._type_dict

    setattr(Node, 'get_all_node_types', get_all_node_types)

ハッキーなのであまり好きではありませんが、プログラムの実行中に少なくとも1回インポートされる限り、新しいメソッドを取得します。

于 2012-06-21T14:13:31.513 に答える