Python:如何在另一个类中自动创建实例

Python:如何在另一个类中自动创建实例,python,class,python-2.5,Python,Class,Python 2.5,在编写Python(2.5)程序时,我尝试创建一个类,并在它的\uuuuuu init\uuuuu函数中,自动创建另一个类的实例,该类的名称作为\uuuuuu init\uuuu函数的参数,如下所示: class Class1: def __init__(self,attribute): self.attribute1=attribute class Class2: def __init__(self,instanceNa

在编写Python(2.5)程序时,我尝试创建一个类,并在它的
\uuuuuu init\uuuuu
函数中,自动创建另一个类的实例,该类的名称作为
\uuuuuu init\uuuu
函数的参数,如下所示:

    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')
,并尝试获取instance2的attribute1(它应该是从Class2的
\uuuu init\uuuu
函数创建的),我会收到一条错误消息:

    Traceback (most recent call last):
      File "<pyshell#29>", line 1, in <module>
        print instance2.attribute1
    NameError: name 'instance2' is not defined
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
打印实例2.attribute1
NameError:未定义名称“instance2”
我不知道是什么问题,因为
name='instance3'

exec name+'=Class1('attribute1')
确实有效,不过这可能是因为我对Python没有太多经验。创建实例时,我如何能够自动执行类似操作?

我必须运行,希望其他人能够修复本文中的任何错误:

class Class1:
  def __init__(self, attribute):
    self.attribute1 = attribute

class Class2:
  def __init__(self, instanceName):
    setattr(self, instanceName, Class1(...))  # replace ... with whatever parameters you want

在Python2中,您的类不应该扩展对象吗?您到底想做什么?我很确定有一种方法可以做你想做的事情,它不涉及这个结构。这似乎是一个XY问题-为什么你需要将实例分配给一个特定的名称?现在,您试图将其创建为局部变量,这没有什么意义,因为它只能在局部范围内访问。您的用例是什么?当我添加
exec'global'+instancename
时,这仍然不起作用,它应该可以作为一个全局变量访问。我的目的是能够从Class2中的一个创建Class1的实例,同时也能够创建一个不使用Class2的实例,这是我知道的唯一方法。这,
setattr(self,instanceName,class1('attribute text'))
似乎确实有效,使instanceName成为class1的全局实例。尽管在我给出的示例中有效,我收到了相同的错误消息
namererror:name'instance2'未定义
,当我将其合并到我最初工作的更复杂的程序中时。