Допустим, у меня есть два разных классов с различным числом аргументов:инстанцировании различные классы питона динамически
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(...)
Как я могу ввести различное количество аргументов при динамическом создании экземпляров различных классов, перечисленных выше?
Я где-нибудь рядом с правильным дорожкой, или нет?
Используйте 'apply' (он принимает кортеж аргументов и словарь аргументов ключевых слов и вызывает функцию) –