相同的函数,怎么避开子类,调用父类的

相同的函数,怎么避开子类,调用父类的

class Person(object):

    # 重写实例对象的构造(初始化)方法 

    def __init__(self,name,gender):

        self.name = name

        self.gender = gender

        self.speak()

    # 自定义实例方法,格式化打印实例属性name的值

    def speak():

        print(f'hello!我是{self.name}')

    

    # 自定义实例方法,占位作用 

    def relation(self):

        pass

       

class Student(Person):


     # 重写实例对象的构造(初始化)方法,并调用父类构造方法,实现对实例属性的赋值

     def __init__(self,name,gender,score,major,stu_num = 2018014002):

         self.score = score

         self.major = major

         self.__stu_num = stu_num

         super(Student,self).__init__(name,gender)

         #super.speak()

         

     # 自定义实例方法,格式化打印实例属性stu_num的值

     def speak(self):

         print(f'我的学号为{self.__stu_num},很高兴认识大家')

     # 自定义实例方法,判断学号是否为既定值,并根据判断结构 进行分类打印 

     def identify_stu(self):

         if self.__stu_num =='2018014002':

             print('我的分组已经完成')

         else:

             print('请稍后,马上为你自动分组')


     # 自定义实例方法,设置实例对象的学号为传入的值

     def set_num(self,new_num):

         self.__stu_num = new_num


     # 自定义实例方法,判断该类是否为Person类的子类,并进行分类打印

     def relation(self):

         relation = issubclass(Student,Person)

         if relation == 'True':

             print('我的父类是Person')

         else:

             print('父类正在查询中······')


if __name__ == '__main__':

    stu = Student('小明', '男', 90, '数学')



练习题中,怎么调用父类的speak()函数,一直只能调用到子类的

super(Student,self).__init__(name,gender) 父类的speak()函数根本没打印出来

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
时间, 2021-10-17 10:03:53

同学,你好!super(Student,self).__init__(name,gender) 是调用父类的__init__方法,并没有调用父类的speak()方法,因此没有输出结果。需要使用super调用父类中的speak()方法。

https://img1.sycdn.imooc.com//climg/616b84680990a8b006290290.jpg

https://img1.sycdn.imooc.com//climg/616b847409cc75bc10000302.jpg

祝学习愉快!

  • 提问者 慕用5247936 #1

    谢谢老师,继续请教一下

    super(Student,self).speak() 这行代码,我把他放在子类__init__()函数中调用,他就一直报错。但是放到子类方法speak()中就能正确输出。
    这是因为什么?不都是一样的代码吗

    2021-10-17 10:52:56
  • 时间, 回复 提问者 慕用5247936 #2

    同学,你好!放到子类的__init__中执行没有报错,同学可以将代码提供一下

    https://img1.sycdn.imooc.com//climg/616b94af09b2b04410000452.jpg

    祝学习愉快!

    2021-10-17 11:13:36
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师