类属性与对象属性 init方法的作用 绑定方法(面向对象的知识点) 继承 抽象与继承 派生与覆盖

一、类属性与对象属性  二、init 方法的作用  三、绑定方法  oop Object Oriented Programming 知识点

四、继承  五、抽象与继承 六、派生与覆盖

 一、类属性与对象属性

  类中应该仅存储所有对象共有的内容

    如所有人的国籍相同那就放到类中

  对象中存储每个对象独有的内容

    如每个人的名字都不同

属性的查找顺序:

  对象自己 - > 所在的类 -> 所在类的父类 -> 父类的父类

二、init 方法的作用

init 是初始化的缩写 用于为对象的属性设置初始值

特点

  执行时机:当实例化产生对象时会自动执行该函数
  会自动传入需要初始化的对象
  初始化必须包含至少一个参数 用于表示对象本身
  该函数不允许有返回值 必须为None

三、绑定方法  oop Object Oriented Programming 知识点

绑定即两个东西绑在一起

方法就是函数

那就是说绑定方法 == 绑定函数  是把函数和对象绑定到一起

默认情况下:在 中定义的方法 都是绑定方法

为什么要绑定:

  每个应用程序其实本质上都是在处理数据,那就必须明确 要处理的数据在哪里,如何处理。

绑定方法的好处在于,将需要处理的数据 以及处理数据的方法绑定在一起,这样一来 当你获得一个对象就同时获得 数据以及 相应的处理方法 ,需要时直接调用即可

绑定方法与普通函数的区别

  当使用类调用时,就是一个普通函数 有几个参数就得传几个参数

  当用对象来调用时,是一个绑定方法了,会自动将对象作为第一个参数传入

到底绑定给谁?

  当你的方法执行过程中需要使用到对象中数据时就绑定给对象

  当你的方法执行过程中需要使用到类中数据时就绑定给类

一个类中可以有属性和方法,但是方法分为两种

1.绑定方法  

  1.1 对象绑定方法

    在使用对象调用时会自动传入对象本身,类调用时不会自动传参 有几个就需要传几个

  1.2 类绑定方法  @classmethod

    在使用对象调用时会自动传入类本身

    在使用类来调用时也会自动传入类本身

    单例模式中就会经常使用@classmethod

2.非绑定(静态)方法  @staticmethod

  即不需要对象中的数据 也不需要类中的数据 那就定义为非绑定方法,就是普通函数

在使用面向对象编程时,首先想的时需要什么对象,这些对象具备什么样的属性和什么样德行为,根据属性和行为创建对应的类

四、继承

  继承指的是一种关系,在生活中通过继承关系,例如王思聪继承王健林,对于王思聪可以直接使用王健林已经拥有的被继承的一方(王健林) 称之为父 继承的一方(王思聪) 称之为子

在OOP中 继承描述是类和类之间的关系 例如b类继承a类 b类可以直接使用a类中的属性和方法

a是父类(基类,超类) b是子类(派生类)

好处:极大的提高了代码的复用性

使用继承,至少需要两个类

语法:

  class 子类名称(父类名称):

    pass

五、抽象与继承

继承之后可以直接使用父类的属性和方法,使用继承时 应该先抽象 再继承

抽象指的是 将一系列类中相同的特征和相同行为抽取成形成一个新的类会产生一些与原本业务不想关的类

站在不同角度,思考的方式不同会得到不同的抽象结果,产生不同的类

在 Python3 中任何类都直接或间接继承 Object

  Object是所有类的基类 (根类)

  其中提供一系列方法, 这样一来 无论你是什么类 ,你都可以直接是object中已经存在的方法 一切皆对象

  一切皆对象指的是 在python中您所使用到的任何数据都是对象 int float list dict 模块 包 函数

六、派生与覆盖

派生:子类拥有与父类不同的内容 就称之为派生类

 

覆盖:指的是子类出现了与父类完全相同(属性/方法)名称 根据查找顺序 就会优先找子类的 即覆盖了父类的内容

在子类中访问父类已有的方法或属性的方法

  1 指名道姓的直接调用

  2 super().__init__(父类中的参数)

print(self.__dict__)可以以字典的形式打印出__init__中的所有属性

 

posted @ 2019-05-16 22:11  水天两色  阅读(515)  评论(0)    收藏  举报