Python3.0动态类实例命名

2024-05-12 04:50:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用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

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


Tags: 对象self目标数量错误h1命名例子
3条回答

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

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

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

^{pr2}$

然后你可以用h[0]h[1]等来处理它们

变量是指向保存数据的对象的名称。您试图将数据粘贴到变量名中。那是不对的。在

不用h1到h1000,只需调用变量h,并将其列为一个列表。然后得到h[0]到h[999]。在

如果要生成多个对象,为什么不简单地将它们放入数组/散列中,以便以后查找它们:

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

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

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

相关问题 更多 >