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

时间:2013-11-27 01:18:05

标签: python class python-2.5

在编写Python(2.5)程序时,我尝试创建一个类,并在其__init__函数中自动创建另一个类的实例,其名称作为__init__函数的参数,像这样:

    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的__init__函数创建的)时,我收到一条错误消息:

    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没有多少经验。在创建实例时,我如何能够自动执行此类操作?

1 个答案:

答案 0 :(得分:1)

我必须跑步,所以希望其他人可以解决这篇文章中的任何错误:

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
相关问题