'''
什么是继承?
专业角度:B继承A类,B就叫做A的子类,A叫做B的父类,基类,超类。B类以及B类的对象
使用A类的所有属性以及方法
字面意思:继承就是继承父母的所有资产。
单继承,多继承
继承的优点:1、节省代码 2、增强耦合性 3、代码规范
继承分为单继承和多继承
Person Dog Cat :子类,派生类
Animal :父类,基类,超类
单继承:使用。
多继承:有区别
'''
# class Animal:
# def __init__(self,name,age,sex):
# self.name = name
# self.age = age
# self.sex = sex
#
# class Person(Animal):
# pass
#
# class Dog(Animal):
# pass
#
# class Cat(Animal):
# pass
#
# class A:
# pass
# class Animal:
#
# live = '有生命的'
# def __init__(self,name,age,sex):
# self.name = name
# self.age = age
# self.sex = sex
#
# def eat(self):
# print('动物都要进食')
#
#
# class Person(Animal):
#
# def eat(self):
# print('人类都需要进食')
#1、从类名执行父类的属性。
# print(Person.__dict__)
# print(Person.live)
# print(Person.eat(1))
# 2、从对象执行父类的一切,实例化对象一定会的三件事,一定会执行__init__
# p1 = Person('dab',21,'laddy boy')
# print(p1.__dict__)
# p1.eat()
# print(p1.live)
# Person.live='111'
# print(Person.live)
#注意:子类及子类对象只能调用父类的属性以及方法,不能操作(增删改)。
#子类将父类的方法覆盖了,(重写父类方法)
# p1.eat = '111'
# print(p1.eat)
#对象查找顺序先从对象空间找名字,子类找名字,父类找名字。
class Animal:
live = '有生命的'
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
def eat(self):
print('动物都要进食')
#如何既要执行父类属性,有要执行子类属性
class Person(Animal):
def __init__(self,name,age,sex,hobby):
#方法一:
# Animal.__init__(self,name,age,sex)
# 方法二:
super().__init__(name,age,sex)
self.hobby = hobby
def eat(self):
super().eat()
print('人类都需要进食')
p1 = Person('coco',22,'不详','吹牛逼')
print(p1.__dict__)
p1.eat()
class God:
def __init__(self,name):
self.name = name
def climb(self):
print('神仙累了也要爬树')
def flt(self):
print('会飞')
class Monkey:
def __init__(self,sex):
self.sex = sex
def climb(self):
print('爬树')
class MonkeySun(Monkey,God):
pass
#多继承的难点就是继承顺序问题
qtds = MonkeySun('齐天大圣')
qtds.climb()
'''
多继承:
面向对象:
python2.2 之前都是经典类,python2.2直至python2.7之间存在两种类型:经典类,新式类
经典类 :基类不继承object,查询规则依靠深度优先的原则
新式类:基类必须继承object,查询规则:mro算法
python3x只有新式类
'''