我想从同一类中制造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中,您无法按照我尝试的方式定义对象,也找不到打印对象名称的方法。有什么可以帮助的吗?
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
。
您可以使用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]