<p>你已经在用<code>self.name = 'myData' + str(self.k)</code>做了。问题是您会立即用<code>self.name = myBase()</code>覆盖它。我不知道你想用这个<code>myBase()</code>做什么,但你可能想把它和名字分开。<code>self.name</code>既可以是字符串,也可以是<code>myBase</code>对象,但不能两者都是。你知道吗</p>
<p>也许你能做到:</p>
<pre><code> self.name = 'myData' + str(self.k)
self.base= myBase()
self.base.iteratedValue = s
print '%s name is %s for k = %i' % (self.name, self.baseiteratedValue, self.k)
</code></pre>
<p>这样您就可以将名称和“base”作为单独的属性<code>self.name</code>和<code>self.base</code>。你知道吗</p>
<p>或者,您可以给<code>myBase</code>类一个<code>__str__</code>方法。这将影响在<code>myBase</code>对象上使用<code>print</code>时显示的内容。但是,要做到这一点,您必须在实例化<code>myBase</code>时传入所需的名称,例如:</p>
<pre><code>class myBase(object):
def __init__(self, name, iteratedValue):
self.name = name
iteratedValue = iteratedValue
def __str__(self):
return self.name
class myIterator(object):
def __init__(self):
self.k = 0
def __call__(self, s):
self.k += 1
name = 'myData' + str(self.k)
self.name = myBase(name, s)
print '%s name is %s for k = %i' % (self.name, self.name.iteratedValue, self.k)
# return object named myData1 type of myBase
return self.name
</code></pre>
<p>我不确定这些方法中的哪一种(或者其他方法)是你想要的。令人费解的是,您正在使对象的“name”成为<code>myBase</code>实例。我不确定对象的“名称”要表示什么,但我通常不希望对象的名称是其他对象。你知道吗</p>
<p>顺便说一句,看起来您正在使用python2,在这种情况下,您应该使用<code>class someClass(object)</code>定义类。包括<code>object</code>使您的类成为新样式的类,这基本上是您一直想要的。你知道吗</p>
<p>编辑:如果你要做的是基于字符串创建一个名为<code>myData1</code>的变量,那么你可以做<code>myData('Alice')</code>,然后神奇地让变量<code>myData1</code>引用这个对象,答案是“不要这样做”。如果你想创建一堆对象并通过数字或其他标签以结构化的方式访问它们,请使用列表或字典。你知道吗</p>