python:object()没有参数

时间:2018-09-28 05:10:44

标签: python

当我从下载的书中运行文件时,它可以工作,但是当我自己键入代码时,就会出现错误。

文件 cat2.py

class Cat:
    # constructor:
    def _init_(self, name):
        self.name = name

    def speak(self):
        print(self.name, "says Meow")

    def drink(self):
        print(self.name, "drinks some milk.")
        print(self.name, "takes a nap.")

文件 main2.py

import cat2

#create two instances of a cat
romeo = cat2.Cat("Romeo")
juliet = cat2.Cat("Juliet")

# play with Romeo
romeo.speak()
romeo.drink()

# play with Juliet
juliet.speak()
juliet.drink()

我收到此错误:

TypeError: Object() takes no parameters.

1 个答案:

答案 0 :(得分:0)

如果要覆盖类构造函数,则需要将方法名称从_init_()更改为__init__();它需要在每边都加双下划线。

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

在您显示的代码中,方法_init_()(每侧只有1个下划线)会覆盖类构造函数。您得到的错误是因为行romeo = cat2.Cat("Romeo")将一个参数传递给Cat的构造函数,但是原始的构造函数不接受任何其他参数。