Python高级——对象之继承

2018-08-30  本文已影响0人  浮_屠

Python对象三大特性:

继承

一,单继承

使用如下:

# 定义一个父类,如下:
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)
上一篇下一篇

猜你喜欢

热点阅读