Python 3.0 - 动态类实例命名

时间:2011-01-05 20:15:03

标签: python python-3.x

我想使用while循环来使用简单的递增命名约定来初始化类对象。目标是能够随意扩展类对象的数量,并让程序自动生成名称。 (例如,h1 ...... h100 ...... h1000 ......)每个h1,h2,h3 ......都是它自己的实例。

这是我的第一次尝试......一直无法找到一个好的例子。

class Korker(object):

     def  __init__(self,ident,roo):
             self.ident = ident
             self.roo = roo


b = 1
hwinit = 'h'
hwstart = 0

while b <= 10:
    showit = 'h' + str(b)
    print(showit)   #showit seems to generate just fine as demonstrated by print
    str(showit) == Korker("test",2)   #this is the line that fails

    b += 1

我得到的错误范围从字符串错误到不能使用函数类型错误....任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:3)

如果你想生成许多对象,为什么不简单地将它们放在一个数组/哈希中,以便稍后查找它们:

objects = {}
for b in range(1,11):
    objects['h'+str(b)] = Korker("test", 2)

# then access like this:
objects['h3']

当然有一些方法可以在本地提供名称,但这不是一个好主意,除非你知道为什么需要它(通过globals()和locals())。

答案 1 :(得分:2)

变量是指向保存数据的对象的名称。您试图将数据粘贴到变量名称中。这是错误的方式。

而不是h1到h1000,只需调用变量h,并将其设为列表。然后你得到h [0]到h [999]。

答案 2 :(得分:1)

与viraptor的解决方案略有不同:使用列表。

h = []
for i in range(10):
    h.append(Korker("test",2))

事实上,你甚至可以在一行中使用列表理解:

h = [Korker("test", 2) for i in range(10)]

然后,您可以使用h[0]h[1]

来与他们取得联系