我想使用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
我得到的错误范围从字符串错误到不能使用函数类型错误....任何帮助将不胜感激。
答案 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]
等