day11,12 — 继承和派生

面向对象的三大特性:封装,继承和多态

一,继承

什么是继承?

     # 什么是什么的关系  一个类是另一个类的子类

     #继承是一种创新类的方式,新建的类可以继承一个或多个父类。父类有称为基类或超类,新建的类有成为派生类或子类

         继承一个父类叫做单继承,继承多个父类叫做多继承

     # 继承的好处 : 减少代码的冗余,增强代码的重用信

二,继承的用法

super : 调用父类的功能和方法

格式一 : 在子类的内部调用父类的属性和方法

     class 父类名:

          def  属性(self):

                    功能

      class  子类名(父类名):

            def 属性(self) :
                    super().属性名

1 class A:
2     def aa(self):
3         print(11)
4 class B(A):
5     def aa(self):
6         super().aa()
7 b=B()
8 b.aa()

   在子类外部调用父类的属性和方法是,必须要给super传入两个参数,一个是子类名,一个是对象名:super(子类名,对象).属性()

   在多继承的时候,super继承的是第一个父类

super :新式类调用父类的方法。 super找到有该方法或属性的第一个父类

 1 # class People:
 2 #     def __init__(self,name,age,sex):
 3 #         self.name=name
 4 #         self.age=age
 5 #         self.sex=sex
 6 # class Nan:
 7 #     pass
 8 # class Student(Nan,People):
 9 #     def __init__(self,name,age,sex):
10 #         super().__init__(name,age,sex)
11 # fang=Student('fang','',18)
12 # print(fang.name)

  父类名.__init__(self): 经典类调用父类方法和属性的方式

 

# class People:
#     def __init__(self,name,age,sex):
#         self.name=name
#         self.age=age
#         self.sex=sex
# class Nan:
#     pass
# class Student(Nan,People):
#     def __init__(self,name,age,sex):
#         People.__init__(self,name,age,sex)
# fang=Student('fang','男',18)
# print(fang.name)

继承中子类可以继承父类的所有属性和方法

# class People:
#     def __init__(self,name,age,sex):
#         self.name=name
#         self.age=age
#         self.sex=sex
# class Nan:
#     pass
# class Student(Nan,People):
#     def __init__(self,name,age,sex):
#         People.__init__(self,name,age,sex)
# fang=Student('fang','男',18)
# print(fang.name)

  当子类和父类中有同名的方法和属性时,一定时调用自己的

如果想调用父类的方法和属性时,需要借用super来调用

对象剋有调用自己和父类的所有方法和属性,首先时调用自己的,自己没有再去调用父类的

谁(对象)调用方法,self就会指向谁

自己私有的方法叫做派生方法,自己私有的属性叫做派生属性

从下到上叫做抽象,从上到下叫做继承

 

posted @ 2017-09-20 15:13  敌说  阅读(121)  评论(0编辑  收藏  举报