HUSTtctco 2019-02-02 12:24 采纳率: 0%
浏览 790

Python学习过程中的问题:继承__init__的参数数量如何确定?

如题,版本python3.7,代码如下

class People():
    def __init__(self, name, city):
        self.name = name
        self.city = city
    def __str__(self):
        return "({} {})".format(self.name, self.city)
    def __repr__(self):
        return "({} {})".format(self.name, self.city)
    def moveto(self, new_city):
        self.city = new_city
    def __lt__(self, other):
        return self.city < other.city

class Teacher(People):
    def __init___(name, city, school):
        super().__init__(self, name, city)
        self.school = school
    def moveto(self, new_school):
        self.school = new_school
    def __lt__(self, other):
        return self.school < other.school


>>> Teacher("Xu", "China", "PekingUniversity")
Traceback (most recent call last):
  File "<pyshell#94>", line 1, in <module>
    Teacher("Xu", "China", "PekingUniversity")
TypeError: __init__() takes 3 positional arguments but 4 were given
>>> 

  • 写回答

2条回答

  • 流泪熊猫头 2019-02-02 17:16
    关注

    给你检查了半天,才发现大兄弟你Teacher类里的__init__方法多打了一个下划线……所以变成了一个普通方法……相当于你子类没有定义构造函数,在实例化的时候就调用父类构造函数咯。
    父类构造函数参数只有两个,你传三个参数当然会报错咯。

    评论

报告相同问题?

悬赏问题

  • ¥100 求数学坐标画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站