【问题标题】:Need function to assign object name in class需要函数在类中分配对象名称
【发布时间】:2020-05-24 02:09:42
【问题描述】:

我正在尝试创建一个课程Player,并且我希望用户创建对象,比如添加到他们的团队中。

乔丹说,每个教程都会有这样的内容来培养新球员。

class Player:
    def __init__(self, name):
        self.name = name

p1 = Player('Jordan')
p2 = Player('Kobe')

但我希望用户能够创建新玩家,而且他们不会编写代码,对吧? 我宁愿对象变量只是球员的名字,比如“乔丹”或“科比”。

所以如果一切都是手动的,我可以说,

jordan = Player('Jordan')
kobe = Player('Kobe')

所以要提出一个让用户创建玩家的功能,它应该是什么样的?变量是什么?有什么方法可以将其分配为玩家名称?或者至少是一个序列号,例如 p1、p2、p3、...?

def create_player():
    new_player = input("Which player would you like to create? ")
    name_of_variable_for_player = Player(new_player)

好的,继续提问。

当你在 create 函数中只有一个静态变量时会发生什么?


def create_player():
    p = Player(input("What player would you like to make? ")

【问题讨论】:

  • 这能回答你的问题吗? How do I create a variable number of variables? 例如roster = {}; name = 'Jordan'; roster[name] = Player(name)
  • wjandrea,我不确定你的建议是什么?所有这些都在一条线上吗?还是在每个“;”处依次向下一行?
  • @StuNami 好的,我给你写一个答案
  • 我不确定您要对“创建函数中的静态变量”做什么,因为函数一结束,p 就会丢失。

标签: python class


【解决方案1】:

使用字典而不是动态变量。更多详情见How do I create a variable number of variables?

在这种情况下,可能看起来像这样:

class Player:
    def __init__(self, name):
        self.name = name

    def __repr__(self):  # Adding this for better output
        cls_name = type(self).__name__
        return '{}({!r})'.format(cls_name, self.name)

my_team = {}
name = input("Which player would you like to create? ")
my_team[name] = Player(name)
print(my_team)

示例运行:

Which player would you like to create? Shaq
{'Shaq': Player('Shaq')}

如何将其转化为函数可能会因您要执行的操作而异,但您可以从这里开始:

def add_player_to_roster(roster):
    name = input("Which player would you like to create? ")
    roster[name] = Player(name)

my_team = {}
add_player_to_roster(my_team)
print(my_team)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多