day24继承

# 面向对象编程
# 思想:角色抽象、创建类、实例化、操作实例
# 面对对象关键字
# class 类名:
# 静态属性='aaa'
# def __init__(self):
# pass
# 类名。静态属性——存储在类的命名空间里
# 对象=类名()——实例化
# 对象.属性
# 对象.方法=类名.方法(对象)
# 对象可以使用静态变量
# 类不可以使用对象里的属性
# 组合
# 一个类的对象是另一个类对象的属性

# class A:
#     def __init__(self):
#         self.name = 'egon'
#
#
# class B:
#     def __init__(self, year, month, day):
#         self.year = year
#         self.month = month
#         self.day = day
#
#
# b = B(18, 7, 1)
# a = A()
# a.birth = b
# print(a.birth.year)  # 这就是组合

# 类的继承

# class A(object):  # 父类,基类,超类
#     pass
#
#
# class B:  # 父类,基类,超类
#     pass
#
#
# class A_son(A):  # 子类、派生类
#     pass
#
#
# class AB_son(A, B):  # 子类、派生类
#     pass
#
#
# # 一个类可以被多个类继承
# # 一个类可以继承多个父类
# print(A_son.__bases__)  # 此方法可以查看父类
# print(A_son.__bases__)
# print(A.__bases__)  # python3-新式类——没有继承默认继承object

# class Animal:
#     def __init__(self, name, aggr, hp):
#         self.name = name
#         self.aggr = aggr
#         self.hp = hp
#         self.func()
# 
#     def func(self):
#         print('123')
# 
# 
# class Dog(Animal):
#     def func(self):
#         print(456)
# 
#     def bite(self, person):
#         person.hp -= self.aggr
# 
# 
# class Person(Animal):
#     pass
# 
# 
# jin = Dog('金老板', 200, 500)
# print(jin.name)
# 
# 
# class Animal:
#     def __init__(self, name, aggr, hp):
#         self.name = name
#         self.aggr = aggr
#         self.hp = hp
# 
#     def eat(self):
#         print('吃药回血')
#         self.hp += 100
# 
# 
# class Dog(Animal):
#     def __init__(self, name, aggr, hp, kind):
#         Animal.__init__(self, name, aggr, hp)
#         self.kind = kind  # 派生属性
# 
#     def eat(self):
#         Animal.eat(self)  # 如果要使用父类中的功能,则要在子类中调用父类
#         self.teeth = 2
# 
#     def bite(self, person):  # 派生方法
#         person.hp -= self.aggr
# 
# 
# jin = Dog('金老板', 100, 500, '吉娃娃')
# jin.eat()
# print(jin.hp)
# 
# 
# class Person(Animal):
#     def __init__(self, name, aggr, hp, sex):
#         Animal.__init__(self, name, aggr, hp)
#         self.sex = sex  # 派生属性
#         self.money = 0  # 派生属性
# 
#     def attack(self, dog):
#         dog.hp -= self.aggr
# 
# 
# alex = Person('alex', 1, 2, None)
# alex.eat()
# print(alex.hp)

# 继承顺序
# python3:广度优先
# python2:深度优先
# super的本质是依据调用者节点位置的广度优先顺序来的
原文地址:https://www.cnblogs.com/wujunjie-sir/p/9249552.html