美文网首页
Python高级——对象之继承

Python高级——对象之继承

作者: 浮_屠 | 来源:发表于2018-08-30 20:30 被阅读0次

    Python对象三大特性:

    继承

    一,单继承

    • 在生活中继承一般是父辈的东西传承个下一代,有子女接收
    • 在程序中描述的事物之间的所属关系也是继承,如:猫和狗都属于动物,,在程序中则猫狗继承动物,,同理,波斯猫和巴厘猫都继承自猫,而沙皮狗和斑点狗都继承足够


      image.png

    使用如下:

    # 定义一个父类,如下:
    class Cat(object):
    
        def __init__(self, name, color="白色"):
            self.name = name
            self.color = color
    
        def run(self):
            print("%s--在跑"%self.name)
    
    
    # 定义一个子类,继承Cat类如下:
    class Bosi(Cat):
    
        def setNewName(self, newName):
            self.name = newName
    
        def eat(self):
            print("%s--在吃"%self.name)
    
    
    bs = Bosi("印度猫")
    print('bs的名字为:%s'%bs.name)
    print('bs的颜色为:%s'%bs.color)
    bs.eat()
    bs.setNewName('波斯')
    bs.run()
    

    注意如下:

    class Animal(object):
        def __init__(self, name='动物', color='白色'):
                self.__name = name
                self.color = color
        def __test(self):
                print(self.__name)
                print(self.color)
        def test(self):
                print(self.__name)
                print(self.color)
    class Dog(Animal):
        def dogTest1(self):
                #print(self.__name)#不能访问到父类的私有属性
                print(self.color)
        def dogTest2(self):
                #self.__test() #不能访问父类中的私有方法  
                self.test()
    A = Animal()
    #print(A.__name) #程序出现异常,不能访问私有属性
    print(A.color)
    #A.__test() #程序出现异常,不能访问私有方法
    A.test()
    print("------分割线-----")
    D = Dog(name = "小花狗", color = "色")
    D.dogTest1()
    D.dogTest2()
    

    二,多继承

    程序中及一个子类有多个父类

    # 定义一个父类
    class A:
        def printA(self):
            print('----A----')
    
    # 定义一个父类
    class B:
        def printB(self):
            print('----B----')
    
    # 定义一个子类,继承自A、B
    class C(A,B):
        def printC(self):
            print('----C----')
    
    obj_C = C()
    obj_C.printA()
    obj_C.printB()
    

    Python中是可以多继承的
    父类中的属性和方法一会让子类继承
    当一个子类有多个父类且有相同的属性或行为是先执行A

    重写与调用

    重写就相当于是子类中,有个和父类有相同名字的方法,在子类中的方法会覆盖父类中同名的方法

    #coding=utf-8
    class Cat(object):
        def __init__(self,name):
            self.name = name
            self.color = 'yellow'
    
    
    class Bosi(Cat):
    
        def __init__(self,name):
            # 调用父类的__init__方法1(python2)
            #Cat.__init__(self,name)
            # 调用父类的__init__方法2
            #super(Bosi,self).__init__(name)
            # 调用父类的__init__方法3
            super().__init__(name)
    
        def getName(self):
            return self.name
    
    bosi = Bosi('xiaohua')
    
    print(bosi.name)
    print(bosi.color)
    

    相关文章

      网友评论

          本文标题:Python高级——对象之继承

          本文链接:https://www.haomeiwen.com/subject/hrgdwftx.html