При написании программы Python (2.5) я попытался создать класс и в своей функции __init__
автоматически создать экземпляр другого класса с его именем в качестве аргумента для __init__
функция, что-то вроде этого:Python: как автоматически создать экземпляр в другом классе
class Class1:
def __init__(self,attribute):
self.attribute1=attribute
class Class2:
def __init__(self,instanceName):
#any of Class2's attributes
exec instanceName + '=Class1('attribute1')'
# this should produce an instance of Class1 whose name is instanceName
Но когда я делаю экземпляр Class2, instance=Class2('instance2')
, и попытаться получить attribute1 из instance2 (который должен быть создан из __init__
функции class2 в) я получаю сообщение об ошибке:
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
print instance2.attribute1
NameError: name 'instance2' is not defined
Я не знаю, в чем проблема, так как name='instance3'
и exec name+'=Class1('attribute1')
действительно работает, хотя это, вероятно, потому, что у меня нет большого опыта работы с Python. Как я смогу сделать что-то подобное автоматически при создании экземпляра?
В Python 2, не ваши классы продлить 'object'? –
Что именно вы пытаетесь сделать? Я уверен, что есть способ сделать то, что вы хотите, что не связано с этой структурой. –
Похоже на проблему XY - почему у вас есть требование назначить экземпляр для определенного имени? И сейчас вы пытаетесь создать его как локальную переменную, что мало смысла, поскольку доступно только в локальной области. Каков ваш прецедент? – l4mpi