大家好我是程序员_蓝天, 本文是为了方便初学者能够快速学习python,写的可能不是很好,希望大家多多包涵。 每个赞都是我前进的动力
二,继承
继承:生活中,儿子继承父亲的财产(富二代,拆二代)在Python也是存在继承关系的,被继承的类叫做父类 子类继承父类的方法和属性。
- 继承可以解决重复写类的代码 造成冗余
- 在Python中所有类都继承于object,object就是基类,超类
- Python3默认继承object
1. 继承
一个子类继承于父类
父类中的私有属性和私有方法,子类是无法继承的
class Father:
def __init__(self):
self.name = '皇帝'
self.clother = '龙袍'
def eat(self):
print('吃牛排')
# class 子类(父类)
class Son(Father):
pass
al = Son()
print(al.clother)
al.eat()
1.1 重写父类中的方法与属性
子类中重写init方法,那么实例对象就会访问自己的实例属性,不会去找父类的属性,或者方法
class Father:
def __init__(self):
self.name = '皇帝'
self.clother = '龙袍'
def eat(self):
print('吃牛排')
# class 子类(父类)
class Son(Father):
def __init__(self):
# 这里进行了重写 父类属性
self.name = '张三'
self.clother = '紧身衣'
# 重写方法
def eat(self):
print('吃 烧烤')
al = Son()
print(al.clother)
al.eat()
1.3 属性查找
对象在寻找属性的时候, ----》自身属性,---》所在类中查找---》父类中
对象在寻找方法----》所在类中查找-----》父类中
2.多层继承
多层继承即子类继承父类,父类继承对应的父类
class A:
def __init__(self):
self.money = 10
def eat(self):
print('河虾')
class B(A):
def __init__(self):
self.money = 100
class C(B):
def eat(self):
print('吃奥龙')
wx = B()
# print(wx.money) # 100
wx.eat()
af = C()
print(af.money)
af.eat()
3.多继承
多继承:一个子类继承多个父类
当继承中出现相同的方法则继承顺序是从左到右
class Er:
def body(self):
print('体型健壮')
class Yin:
def body(self):
print('体型娇小')
class Animal(Er, Yin):
pass
class Animal2(Yin, Er):
pass
# a = Animal()
# a.body()
# print('-----------b-----------')
# b = Animal2()
# b.body()
# 查看继承顺序
# print(Animal.__mro__)
# print('-----2------')
# print(Animal2.__mro__)
# 查看父类 返回的是元组 不会出现object , 没有继承类 返回object
# print(Animal.__bases__)
# print('-----3--------')
# print(Animal2.__bases__)
# 查看一个父类 返回的是最左的父类 不会出现object , 没有继承类 返回object
print(Animal.__base__)
print('-----4--------')
print(Animal2.__base__)
三,多态
不同的对象,调用同一个方法,表现出不同的形式
多态的实现:1.必须有类的继承,2 子类必须重写父类的方法
class Cat:
def info(self):
print("我是小猫,我是名字是keitty, 我 3岁")
def sound(self):
print('喵')
class Dog:
def info(self):
print("我是小狗,我是名字是二哈, 我 4岁")
def sound(self):
print('汪汪')
cat = Cat()
dog = Dog()
class Animal(Cat,Dog):
def sound(self):
super().sound()
an1 = Animal()
an2 = Animal()
for animal in (an1,an2):
animal.sound()
animal.info()
animal.sound()