栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python多重继承的实现例子及注意事项、self用法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python多重继承的实现例子及注意事项、self用法

        Python中使用多重继承,一个类继承多个父类时,需要注意的地方有:1.重写父类方法时报错  2.创建子类时参数出错 3.向父类传递参数时出错。接下来通过实现一个例子来一一列举这三个问题。

一.参数中self的用法
class Animal(object):
    def __init__(self,name,age):#类中自己的init方法第一个参数一定是self,代表这个类的实例,传递参数时不需要管self
        self.name=name
        self.age=age

        类中创建的init方法中,第一个参数self,表示Animal类的实例,比如我创建了两个实例,st1和st2,通过st1和st2分别调用Animal中的init方法,那么st1调用的self代表st1,st2调用的st2代表st2,通过运行下面这段代码,从输出结果可以,看出他们的地址不一样

class Animal(object):
    def prt(self):
        print(self)

sd = Animal()
sd.prt()
sd2 = Animal()
sd2.prt()

输出结果:

                <__main__.Animal object at 0x000001B4CB1B17F0>
                <__main__.Animal object at 0x000001B4CB1B1790>

二、多重继承的例子
class Animal(object):
    def __init__(self,name,age):#类中自己的init方法第一个参数一定是self,代表类的实例,传递参数时不需要管self
        self.name=name
        self.age=age

class Dog(Animal):
    def __init__(self,name,age,typ):
#       super.__init__(name,age)#单个父类继承时,要是super()
        super().__init__(name,age)
        self.typ=typ

#class Smalldog(Animal,Dog):#参数中父类的顺序问题,一级一级按顺序写
class Smalldog(Dog,Animal):
    def __init__(self,name,age,typ,eat):
#        super().__init__(name,age,typ)#不能直接使用super()给父类传递参数,因为有两个父类
#        Animal.__init__(name,age)#在进行父类传递参数的时候,
#        Dog.__init__(name,age,typ)
        Animal.__init__(self,name,age)
        Dog.__init__(self,name,age,typ)
        self.eat=eat
    def pt(self):
        print(self.eat)

sd = Smalldog('小旺',4,'柴犬','奶粉')
sd.pt()
三、注意事项

        1.重写父类方法时报错
               重写时注意是super().而不是super.

        #       super.__init__(name,age)#单个父类继承时,要是super()
                super().__init__(name,age)

        2.创建子类时参数出错

                创建时参数顺序为从左到右依次寻根,根类在右

        #class Smalldog(Animal,Dog):#参数中父类的顺序问题,一级一级按顺序写
        class Smalldog(Dog,Animal):

        3.向父类传递参数时出错

                如上面代码部分,传递参数时,注意指明是哪一个父类,并且第一个参数要为self,类的方法内部调用其他方法时,需要用到 self 来代表实例,在Smalldog类内部调用父类Animal的方法,第一个参数为self,代表Smalldog的实例对象是哪一个,这样父类Animal才能知道自己被哪一个对象实例化了

#        Animal.__init__(name,age)#在进行父类传递参数的时候,
#        Dog.__init__(name,age,typ)
        Animal.__init__(self,name,age)
        Dog.__init__(self,name,age,typ)

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1015911.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号