0

假设我有两个不同的类,它们的参数数量不同:

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 回答