批量创建对象并推定对象名称[重复]

问题描述 投票:-2回答:2

我想从同一类中制造100个对象,并在每次创建对象时打印它们的名称。像这样的东西:

class Human():
        def __init__(self):
            #print the name of the object

human1 = Human()
human2 = Human()
human3 = Human()
human4 = Human()
human5 = Human()
.......

我能够走得这么远:

class Human():
    def __init__(self):
        #print the name of the object

for i in range(1,101):
    #'human' + str(i) = Human()

但是我陷入了困境,因为在python中,您无法按照我尝试的方式定义对象,也找不到打印对象名称的方法。有什么可以帮助的吗?

python python-3.x class oop object
2个回答
0
投票
class Human():
    def __init__(self, name="default name"):
        self.name = name

    def __str__(self):
        return self.name


# print the name of the object

human1 = Human(name="sanjay")
print(human1)

如果传递name参数,它将以其他方式打印default name


0
投票

您可以使用exec函数从字符串中形成变量名:

for i in range(0,101):
  exec("human"+str(i)+"=Human()")
  print("human"+str(i)+"=Human()")

但是,如果您以后要访问那些类实例而又不手动引用它们,则必须构建相同的字符串并将其放在另一个exec(或eval)函数中。

不太麻烦的替代方法是将所有实例保留在列表或dict这样的数据结构中:

human_list = []
human_dict = {}
for i in range(0,101):
  human_list.append(Human())
  human_dict[i] = Human()

然后像这样引用它们>

human_list[i]
human_dict[i]
© www.soinside.com 2019 - 2024. All rights reserved.