0

它说

    sarah = Athlete('Sarah Sweeney', '2002-6-17', ['2:58', '2.58', '1.56'])
TypeError: object() takes no parameters

怎么了?谢谢你。这是 Head First Python 中的示例

class Athlete:
    def _init_(self, a_name, a_dob=None, a_times=[]):
        self.name = a_name
        self.dob = a_dob
        self.times = a_times

sarah = Athlete('Sarah Sweeney', '2002-6-17', ['2:58', '2.58', '1.56'])
4

2 回答 2

4

那是因为你没有重载类的魔法__init__方法object。取而代之的是,您定义了一个_init_对 Python 没有特殊含义的新方法(Python 中的特殊方法应该用双下划线括起来)。

只要你的类没有重载,每次实例化类时都会调用__init__一个默认的(继承自)。object而那个默认的没有参数。

另请参阅: Python 中的特殊(魔术)方法,特殊方法的 Python 文档在哪里?(__init__, __new__, __len__, ...)

于 2013-11-11T15:48:50.393 回答
3

你拼错__init__了(注意开头和结尾的双下划线)。

于 2013-11-11T15:50:12.707 回答