Python-面向对象(二)

四、继承方法

1、单继承

子类在继承的时候,在定义类时,小括号()中为父类的名字
父类的属性、方法,会被继承给子类

class Animal():
    pass

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

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

bsm = Cat("波斯猫")
print(bsm.name)

wc = Dog("旺财")
print(wc.name)
2、多继承

多继承就是子类可以有多个父类并可以继承他们的属性行为

class A():

    def __init__(self):
        self.name = 10
        self.age = 20

    def show(self):
        print("heheh A")

class B():
    def show1(self):
        print("哈哈哈")

class C(A,B):
    pass

c = C()
print(c.name)
print(c.age)
c.show()
c.show1()
print(c.age)
print(C.__mro__)

五、重写和调用父类方法

1、重写就是当子类不满足父类的时候就需要重写,有一个和父类相同名字的方法,在子类中的方法会覆盖掉父类中同名的方法。

class Cat(object):
def sayHello(self):
print("halou-----1")


class Bosi(Cat):

def sayHello(self):
print("halou-----2")

bosi = Bosi()

bosi.sayHello()

2、调用父类方法当子类想回到父类的属性的时候就需要用到调用父类方法用super()。

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-面向对象(二))