class People():
def init(self,height,money):
self.height=height
self.money=money
class Man(People):
def init(self,age):
self.age = age
Man(11,22)
TypeError: init() takes 2 positional arguments but 3 were given
[](https://img2018.cnblogs.com/q/1296045/201903/1296045-20190328140226935-1631748365.png
子类 Man() 初始化函数 只需要传入 1个参数,实例化时 传入 2个参数, 但是 错误提示 说 传入了3个, 是什么原因
因为self
也算一个参数,只是不用显示传递,self
表示实例自身。报错说你传了3个,没毛病,它把self
也算上了。
另外,你如果想在子类的init方法里调用父类的init方法可以参看这篇博文:python中子类调用父类的初始化方法
def init(self,age) 这里要传入三个参数 还有个 money
如果你这样定义了def init(self,height,money),实例化的时候就需要这样写 my_people = People(1,2) 这两个(1,2)是对于height,money而言,没有任何意义的值,只是起到实例作用,实际并没有对 height,money 进行赋值,你可以尝试一下。