当我从下载的书中运行文件时,它可以工作,但是当我自己键入代码时,就会出现错误。
文件 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.
答案 0 :(得分:0)
如果要覆盖类构造函数,则需要将方法名称从_init_()
更改为__init__()
;它需要在每边都加双下划线。
class Cat:
def __init__(self, name):
self.name = name
在您显示的代码中,方法_init_()
(每侧只有1个下划线)不会覆盖类构造函数。您得到的错误是因为行romeo = cat2.Cat("Romeo")
将一个参数传递给Cat
的构造函数,但是原始的构造函数不接受任何其他参数。