python面向对象继承

class A(object):pass   # 括号中可称为父类,基类,超类
 class B:pass   # 父类,基类,超类
 class A_son(A,B):pass # 子类,派生类
 class AB_son(A):pass # 子类,派生类
# 一个类 可以被多个类继承
# 一个类 可以继承多个父类  —— python里
 print(A_son.__bases__) #查看父类
# print(AB_son.__bases__)
# print(A.__bases__)  # python3 -新式类# 没有继承父类默认继承object,object是所有类的父类
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

父类中没有的属性 在子类中出现 叫做派生属性
 父类中没有的方法 在子类中出现 叫做派生方法
 只要是子类的对象调用,子类中有的名字 一定用子类的,子类中没有才找父类的,如果父类也没有报错
 如果父类 子类都有 用子类的
 如果还想用父类的,单独调用父类的:
 父类名.方法名 需要自己传self参数
 super().方法名 不需要自己传self                 当有棱形继承时super调用方法的顺序安找棱形继承的顺序调用。
 正常的代码中 单继承 === 减少了代码的重复
 继承表达的是一种 子类是父类的关系

posted @ 2019-01-04 21:01  曜有丨光  阅读(136)  评论(0编辑  收藏  举报