Python基础-DAY20

继承 inheritance  和 派生  (derived)

 

什么是继承和派生

  继承是延续旧类的功能,派生是在旧类的基础上添加新功能

 

为什么要继承:

  继承的目的是延续旧的类的功能

  派生的目的是在旧类的基础上添加新的功能

 

继承/派生的作用:

  1) 用继承派生机制,可以将一些共有功能加在基类中,实现代码的共享.

  2) 在不改变超类的代码的基础上改变原有的功能

扫描二维码关注公众号,回复: 4378023 查看本文章

 

继承/派生相关的名词:

  基类(base class) / 超类(super class) / 父类(father class)

  派生类(derived class) / 子类(child class)

 

单继承的语法:

   class 类名(超类名):

       ...

继承说明:

  任何类都直接或间接的继承自 object 类

  object类是一切类的超类(祖类)

 

__base__ 属性

  __base__ 属性用来记录此类的基类

 

查看所有内建类的办法:

  >>> help(__builtins__)

 

 

覆盖 override(也叫重写 overwrite)

什么是覆盖

  覆盖是指在有继承关系的类中,子类中实现了与基类(超类)同名的方法,在子类实例调用该方法时,实际调用的是子类中的覆盖版本,这种现象叫覆盖。

 

 

 

子类对象显式调用基类方法的方式:

   基类名.方法名(子类实例, 实际参数)

 

super 函数

  super(type, obj) 返回绑定超类的实例(要求obj必须为type类型的实例)

  super()  返回绑定超类的实例,等同于:super(__class__ 实例方法的第一个参数),必须在方法内调用

 

作用:

  返回绑定超类的实例,用超类的方法来调用其自身方法

 

 

用于类的函数:

  issubclass(cls, class_or_tuple) 判断一个类是否继承自其它的类,如果此类cls 是class或tuple中的一个派生子类,则返回True, 否则返回False

示例:

class A:

    pass

 

class B(A):

    pass

 

class C(B):

    pass

 

  issubclass(B, A)  # True

 

多态 polymorphic

什么是多态:

  字面意思:多种状态

 

  多态是指在有继承/派生关系的类中,调用基类对象的方法,实际能调用子类的覆盖方法的现象,叫多态

 

 

封装 enclosure

  封装是指隐藏类的实现细节,让使用者不关心这些细节

注:

  Python并不能实现C++语言中完全意义上的封装,python的封装是模拟(假的)的封装

 

 

私有实例变量和方法:

  python类中,以双下划线(__)开头,不以双下划线结尾的标识符为私有成员

    以 __开头的实例变量或方法无法在子类或类外部直接调用

 

 

 

面向对象编程语言的特征:

  继承

  封装

  多态

 

 

多继承  multiple inheritance

 多继承是指一个子类继承自两个或两个以上的基类

 

语法:

  class 类名(超类名1, 超类名2, ...):

     ...

 

多继承的问题(缺陷)

  标识符(名字空间)冲突的问题

  (要谨慎使用多继承)

 

示例:

  class A:

      "小张写了一个类A"

      def __init__(self):

          self.name = "A"

 

  class B:

      "小李写了一个类B"

      def __init__(self):

          self.name = "B"

  # 小王感觉小张和小李写的两个类自己可以用,于是:

  class AB(A, B):

      def infos(self):

          print(self.name)  # 请问打印结果是什么?

 

PEP8编码规范

代码编排:

  1.使用4空格缩进,不使用Tab,更不允许用Tab和空格混合缩进

  2. 每行最大长度不超过79字节,超过的部分使用反斜框折行

  3. 类和全局函数定义间隔两个空行,类内方法定义间隔一个空行,其它地方可以不加空行

 

文档编排:

  1. import 部分,按内建(标准), 三方,自己编写的模块顺序依次排放,之间空一行

  2. 不要在一句import 中导入多个模块,比如不推荐import os, sys

  3. 尽可能用import xx 而不采用from xx import yy引用模块,因为可能出现名字冲突

 

空格的使用

  1. 各种右括号前不加空格

  2. 逗号,冒号,分号前不要加空格

  3. 函数的左括号前不要加空格

  4. 序列的左括号前不要加空格

  5. 运算符左右各加一个空格,不要为了对齐加空格

  6. 函数默认参数使用的赋值符左右不加空格

  7.不要将多条语句写在同一行,尽管使用';'是允许的

  8. if/for/while语句中,即使执行语句只有一句,也必须另起一行

  原则:避免不必要的空格

 

猜你喜欢

转载自blog.csdn.net/qq_41797451/article/details/81634587