【问题标题】:Trying to initialize a list, getting __init__ type error试图初始化一个列表,得到 __init__ 类型错误
【发布时间】:2018-03-14 00:13:30
【问题描述】:

当我尝试运行我的 Player 对象的迭代时,我收到以下错误:init() 缺少 2 个必需的位置参数:'player' 和 'number'。

我的困惑在于我认为我不需要为“球员”和“人数”提供参数,因为我只是想显示整个首发球员名单。这是我的相关代码:

class Player:

    def __init__(self, player, number):
        self.player = player
        self.number = number
        self.starting_players = []

    def player_build(self):
        for p in ["Player"]:
            for n in range(1, 5):
                self.starting_players.append(Player(p, n))
                print('{} {}'.format(self.player, self.number))

    def show(self):
        for s in self.starting_players:
            s.show()

【问题讨论】:

  • 请显示您的异常的完整回溯。它应该准确地告诉您在哪里对Player 进行了不当调用。我怀疑您正在尝试创建一个实例来调用player_build,但您没有传递所需的参数。我认为你的类设计没有多大意义,你真的应该使用一个单独的类来收集多个玩家(starting_players 属性和player_build 方法应该存在于该集合中)。也就是说,除非您想将您的玩家安排在某种树中......
  • 这正是我想做的,是的。我仍然不确定为什么我必须创建另一个类来做到这一点,但看到我的其他两个类(未在此问题中显示)是“卡片”和“套牌”似乎是有道理的。

标签: python-3.x list init


【解决方案1】:

如果你定义:

class Player:
    def __init__(self, player, number):
        ...

那么为了初始化,你必须这样做:

player1 = Player('John', 14)

说实话,你最好定义一个新类 class Team 并让它包含许多玩家 class Player

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 2012-02-01
    • 2023-03-17
    • 1970-01-01
    • 2015-01-13
    相关资源
    最近更新 更多