鱼C论坛

 找回密码
 立即注册
查看: 451|回复: 2

[已解决]038继承问题

[复制链接]
发表于 2018-8-18 11:43:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
小甲鱼上课代码
import random as r
class Fish:
    def __init__(self):
        self.x = r.randint(0,10)
        self.y = r.randint(0,10)

    def move(self):

        self.x -= 1
        print('我现在的位置是',self.x,self.y)

class Shark(Fish):
    def __init__(self):
    super().__init__()
    self.hungry = True
    def eat(self):
        if self.hungry:
            print('我饿了,我要吃')
            self.huangry = False
        else:
            print('吃饱了,不吃了')


import random as r
class Fish:
    def __init__(self):
        self.x = r.randint(0,10)
        self.y = r.randint(0,10)

    def move(self):

        self.x -= 1
        print('我现在的位置是',self.x,self.y)

class Shark(Fish):
    def eat(self):
        self.hungry = True
        if self.hungry:
            print('我饿了,我要吃')
            self.huangry = False
        else:
            print('吃饱了,不吃了')
            
            
视频讲的避免子类的__init__方法覆盖父类的方法,那我在子类不写入__init__方法不就可以了吗,这样做有什么不足吗?
还有我在方法里面定义的
    def eat(self):
        self.hungry = True
这样 self.hungry是不是就不算Shark这个类的属性了??

还有如果我是多重继承并且每个类都有__init__的话,怎么用super()函数找到我需要的那个类的__init__
求大佬指导
最佳答案
2018-8-18 11:58:32
1.对的,但是假如你要调用父类的__init__会有些麻烦
2.算的。
3.会先调用较早定义的类,一个super所有父类都会被调用。
指定的话只能通过xx.__init__(xx是父类)来调用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-18 11:58:32 | 显示全部楼层    本楼为最佳答案   
1.对的,但是假如你要调用父类的__init__会有些麻烦
2.算的。
3.会先调用较早定义的类,一个super所有父类都会被调用。
指定的话只能通过xx.__init__(xx是父类)来调用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-18 14:16:30 | 显示全部楼层
1.使用super函数可较好的解决
2.算一个参数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 13:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表