老师可以帮我看下我的问题出在哪里了吗

老师可以帮我看下我的问题出在哪里了吗

class Animal(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age


class Person(Animal):
    def __init__(self, sex):
        self.sex = sex

    def person(self):
        return '这是一个叫{}今年{}岁的{}'.format(self.name, self.age, self.sex)


class Bird(Animal):
    def __init__(self, kind):
        self.kind = kind

    def bird(self):
        print('这是一个叫{}今年{}岁的{}'.format(self.name, self.age, self.kind))


test = Person(name='xiaomu', age=3, sex='boy')
result = test.person()
print(result)
test = Bird(name='dewei', age=2, kind='金丝雀')
test.bird()
           
下载视频          

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

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

1回答
好帮手慕凡 2022-04-06 17:40:08

同学,你好!

1、在类实例化时传入了三个参数,类中的__init__( )方法也要有三个形参接收参数;

2、在子类中调用父类__init__方法中的实例属性,需要先调用父类的__init__方法;

https://img1.sycdn.imooc.com//climg/624d5f750987cfe509120712.jpg

祝学习愉快~

  • 提问者 慕慕6331959 #1

    老师,问题解决掉了,但我还是有疑问:

    1. 在视频课上讲实例的时候,父类里的参数在子类方法play_football里并没有去做重新接受啊,只有一个self参数,还是说因为下面没用到?

    2. 我如果要调用父类__init__方法,是直接用类名+父类__init__方法,不需要加其他的东西吗(例如:cls,self)

    下载视频          
    2022-04-06 18:37:15
  • 好帮手慕凡 回复 提问者 慕慕6331959 #2

    同学,你好!

    1、如果ChildOne子类中没有__init__( )方法,会直接调用父类的__init__( )方法,如果子类有__init__( )方法会执行子类的__init__( )方法,这时想要调用在子类中调用父类__init__方法中的实例属性,需要先调用父类的__init__方法;

    https://img1.sycdn.imooc.com//climg/624e4696091cf2fc07420530.jpg

    https://img1.sycdn.imooc.com//climg/624e473c0984ee8e07900404.jpg

    2、有两种继承父类的方法:使用super关键字,super( ).__init__(参数),父类名称.__init__(self, 参数),这种写法第一个参数是self,是固定写法,区别:继承多个父类时,使用super()只会调用第一个父类的init方法;若要继承多个父类的init方法需要使用父类名.__init__()方式

    https://img1.sycdn.imooc.com//climg/6168e6e4095a28b009700181.jpg

    祝学习愉快~
    2022-04-07 10:10:43
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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