假设我有两个不同的类,其中有不同数量的参数:
class A(object):
def __init__(self, arg1, arg2, arg3)
...
class B (object):
def __init__(self, arg1, arg2)
....
有没有办法动态实例化这些类,因为参数的数量有所不同?
我会在这里给你更大的图片。我已经创建了一个XML解析器,它已成功解析XML文档中的所有信息,并根据标记名称将它们缓存到列表中(<room>
将进入self.room,<item>
将进入自我.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(...)
那么在动态实例化上面列出的不同类时,如何输入不同数量的参数?
我是否在正确的轨道附近?
答案 0 :(得分:2)
这应该很简单:
klass = A
args = (a, b, c)
obj = klass(*args)
您可以将所有这些放入工厂函数或类中。
答案 1 :(得分:1)
我认为*args
是你的朋友。它代表一个参数列表,因此可以处理这两个类的创建。