Python:根据用户输入在运行时创建类的实例

时间:2012-11-23 00:47:11

标签: python

我对python有点新鲜,并且一整天都在搜索这些信息。我希望能够向用户询问他们想要多少个实例,并根据他们的输入,创建他们所请求的类的多个实例。

我还希望能够让每个实例的名称都基于输入,例如询问此人的姓名等。

NumPlayers = input("How many people are playing? ")
for i in range(0, int(NumPlayers)-1):
    name = input("What is your name? ")
    name = Player() 

这与John = Player()类似,但“John”将是用户给我们的任何名称,但用户想要的玩家数量会很多。

从我今天的研究来看,似乎允许人们确定自己实例的名称并不是一个好主意,所以在这一点上我正在考虑更多这样的事情:

NumPlayers = input("How many people are playing? ")
for i in range(0, int(NumPlayers)-1):
    name = input("What is your name? ")
    Player+i = Player(name)

对于更多玩家,这与Player1 = Player("John")等相同。这是可能的吗?这真的让我很难过。只是为了澄清一些事情,类本身已经在代码中,在提供的代码中Player是一个已经用方法和所有内容定义的类。

2 个答案:

答案 0 :(得分:2)

您要寻找的是数据结构,具体而言是list

no_players = input("How many people are playing? ")
players = []
for _ in range(int(no_players)):
    name = input("What is your name? ")
    players.append(Player(name))

这将生成[Player(...), Player(...), ...]的列表。这可以在其他操作中编入索引(players[2])或迭代(for player in players:)。我建议您阅读the documentation了解更多信息。

作为旁注,使用list comprehension可以更好地构建一些列表。

答案 1 :(得分:0)

正如Lattyware建议您正在寻找一个列出您的玩家的列表。 我可以建议稍微修改你的程序,只要他们换上一个新名字,就可以接受任意数量的玩家吗?

players = []
while True:
    playername = input("Insert a new player (empty to begin):")
    if playername:
        players.append(Player(playername))
    else:
        break
相关问题