首页 新闻 搜索 专区 学院

python 实例化对象 报错问题。。。。。。。。。

0
悬赏园豆:20 [已解决问题] 解决于 2019-03-28 15:27

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个, 是什么原因

独&白的主页 独&白 | 初学一级 | 园豆:132
提问于:2019-03-28 14:06
< >
分享
最佳答案
0

因为self也算一个参数,只是不用显示传递,self表示实例自身。报错说你传了3个,没毛病,它把self也算上了。

另外,你如果想在子类的init方法里调用父类的init方法可以参看这篇博文:python中子类调用父类的初始化方法

收获园豆:20
会长 | 大侠五级 |园豆:9130 | 2019-03-28 15:21
其他回答(2)
0

def init(self,age) 这里要传入三个参数 还有个 money

三人乐乐 | 园豆:3250 (老鸟四级) | 2019-03-28 14:10
0

如果你这样定义了def init(self,height,money),实例化的时候就需要这样写 my_people = People(1,2) 这两个(1,2)是对于height,money而言,没有任何意义的值,只是起到实例作用,实际并没有对 height,money 进行赋值,你可以尝试一下。

Lorzen | 园豆:204 (菜鸟二级) | 2019-04-16 08:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册