0

引数の数が異なる2つの異なるクラスがあるとします。

class A(object):
    def __init__(self, arg1, arg2, arg3)
    ...

class B (object):
    def __init__(self, arg1, arg2)
    ....

引数の数に違いがある場合、これらのクラスを動的にインスタンス化する方法はありますか?

ここで全体像を示します。XMLドキュメントからすべての情報を正常に解析し、タグ名に基づいてリストにキャッシュするXMLパーサーを作成しました(<room>self.roomに<item>移動し、self.itemに移動します...)

これが実際に物事を行う方法かどうかはわかりませんが、私がやろうとしているのは、尊重されるリスト内の個々のXML要素からすべての情報を取得し、その情報からPythonオブジェクトを作成してから、それらをに格納することです。口述。

# From XMLParser class
def objectify(self, iterator):
    dict = {}
    # I used elementtree to parse XML documents, 2nd argument of getattr
    # ends up being a capitalized string of iterator's tag name.
    # Ex, <room> becomes 'Room'
    Object = getattr(sys.modules[__name__], iterator.tag.capitalize())
    for element in iterator:
        dict[element.attrib['id']] = Object(...)

では、上記のさまざまなクラスを動的にインスタンス化するときに、さまざまな量の引数を入力するにはどうすればよいですか?

私は正しい道の近くにいますか?

4

2 に答える 2

1

これは簡単なはずです:

klass = A
args = (a, b, c)
obj = klass(*args)

これらすべてをファクトリ関数またはクラスに入れることができます。

于 2013-01-26T17:31:21.710 に答える
0

*argsここにいるのはあなたの友達だと思います。引数のリストを表すため、両方のクラスの作成に対応できます。

于 2013-01-26T17:29:36.750 に答える