为了账号安全,请及时绑定邮箱和手机立即绑定

为什么父类已经有name了,子类还要重新传入name呢?

class Person(object):

    def __init__(self, name, gender):

        self.name = name

        self.gender = gender


class Teacher(Person):


    def __init__(self, name, gender, course):

        super(Teacher,self).__init__(course)

        self.course=course

        


t = Teacher('Alice', 'Female', 'English')

print t.name

print t.course


正在回答

7 回答

你也可以将“super(Teacher,self).__init__(course)”直接改成'

       self.name = name

        self.gender = gender'

0 回复 有任何疑惑可以回复我~

super().__init__()表示初始化父类(超类)的实例属性,子类,继承父类,就必须要先将父类的东西,先初始化一下,在使用,super.__init__()就是扮演这个角色的。

0 回复 有任何疑惑可以回复我~

楼主要先明白super是什么意思啊。

0 回复 有任何疑惑可以回复我~

super().__init__()表示初始化父类(超类)的实例属性

0 回复 有任何疑惑可以回复我~

需要重新初始化,功能一样的,但是属性不一定一样啊,super(Teacher,self).__init__(course)需要改成:

super(Teacher,self).__init__(name,gender,course)

0 回复 有任何疑惑可以回复我~
#1

小荣Here

super(Teacher,self).__init__(name,gender)
2018-09-06 回复 有任何疑惑可以回复我~

 super(Teacher,self).__init__(course)这句代码错误   父类里没有此属性   所以继承不过来 报错

0 回复 有任何疑惑可以回复我~

爸爸的名字也不可能和儿子一样啊    遗传爸爸的帅气和皮肤白 不可能遗传年龄吧 

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

为什么父类已经有name了,子类还要重新传入name呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信