zoukankan      html  css  js  c++  java
  • python-面向对象编程知识点小结

    面向对象介绍

    編程——程序员通过一些列语法+数据结构+算法的集合,告诉计算机如何解决问题的过程。

    编程范式——对各种编程方法的总结,有两种:面向过程、面向对象。

    面向过程——把一个问题,分解成多个子问题或子过程,然后再把子过程进行分解,直到问题可以在一个小范围内解决。

         优:流程化,进而简单化

         缺:可扩展性低

         场景:一次性任务。

    面向对象——通过类和对象,来创建出各种模型来实现对象真实世界的描述。

         优:可扩展性高,

         缺:编程复杂度高。

         场景:网络编程。

    名词解析:

         类——具有相同属性的对象的抽象。

    属性——一类事物的特征。

    方法——一类事物的技能。

    实例(对象)——一个类的实例化后实例

    实例化——一个类实例或成对象的过程。

    面向对象的三大特征:

    封装

    对类的数据的赋值、内部调用对外部的用户都是透明的,这使得类成为一个容器,里面包含着类的数据和方法。

    继承

    一个类可以派生出子类,这个父类的属性、方法自动被子类继承。

    多态

    一个接口、多种实现。一个父类派生出不同的子类,且每个子类在继承父类的方法的同时,又对父类的方法做了不同的实现,这就是同一种事物表现出多种形态。

     

    类与对象

    构造方法(__init__)

            实例化时给实例一些初始化的参数。

    普通方法==函数

    析构方法(__del__)

        删除实例化后的对象

    类与对象的概念

    现——先有对象后又类

    程——先定义类 后产生对象

    注意:

    1、    类中的代码,定义阶段便会执行,产生新的名称空间存放。可以通过(__dict__)查看

    2、    类定义的名字,是类的属性,点是访问属性的方法。

    3、    我们可以通过操作字典的方法获得类的值。

    对象的使用

    1、    站的角度不同,定义的类是不同

    2、    现实的类并不完全等于程序中的类

    3、    程序中可能定义不存在的类。

    属性查找与绑定方法

    属性查找

    两种属性:数据属性、函数属性。

    类中数据属性——所有对象共享的。

    类中函数属性——绑定给对象用的,称绑定到对象的方法。

    查找:对象名称空间》类》父类》最后抛出异常

    绑定方法

    1、类的函数属性是绑定给对象使用的,绑定到不同的对象就是不同的绑定方法。

    2、类中定义的函数,类可以调用,按函数调用规则。有几个参数传几个参数。

    3、绑定到对象那个的方法这种自动传值的特征,决定了类在定义函数都要默认写一个self。

    类即类型

    Python中一切皆对象,py3中,类与类型是一个概念。

     

    继承与派生

    继承——类与类间的关系,是一种什么是什么的关系。

    新建的类可以继承一个或多个父类,父类可以成为基类或超类。新建的类称为派生或子类。

    继承与抽象

    先抽象、后继承。

    继承与重用

    通过继承的方式新建类,可以有父类的属性,实现代码重用。

    继承与派生。

    子类继承父类的属性,可以重新定义所继承的属性,也可以添加自己新的属性,一旦自己的属性与父类的属性重名,调用时以自己为准。

    继承实现原理

    定义类的时候Python自动生成一个MRO列表。

    查找顺序:

    1、    子类优先于父类。

    2、    多个父类会按顺序查找。

    3、    如果存在两个选择,优先选第一个父类。

    注意:新式类——广度优先;经典类——深度优先

    子类调用父类的方法

    1、    指名道姓调——普通类调用方式,与继承无关。

    2、    Super()——依赖继承、即使没有直接继承关系,也会按MRO继续往后查找。

    组合

    组合——一个类中以另一个类的对象作为数据属性。

            继承(什么【是】什么的关系)

            组合(什么【有】什么的关系)

    接口

    接口——提供给使用者调自己功能的方法。

    1、    提取了类的共同函数,把接口当做一个函数的集合。

    2、    让子类实现接口中的函数功能。

    接口的好处:使用者不需要关心对象的类是什么,只需要知道对象都有哪些功能就可以,降低使用难度。

     

    抽象类

    从一堆类中抽取相同的内容,内容包括数据和函数属性,抽象类只能继承不能实例化,子类必须实现抽象方法。(@abc.abstractmethod)  

     

    多态与多态性

    多态——一类事物有多种形态。

    多态性——在不考虑实例类型的情况下使用实例

    分类:动态多态性,静态多态性。

    静态多态性:任何类型都可以用【+】进行运算。

    多态性的好处:1、增加程序灵活性

                  2、增加程序扩展性

     

    封装

    隐藏(通过__x的方式将属性隐藏起来(设置私有的))

    特点:

    1、   在类外部无法直接obj.__AttrName

    2、   在类内部是可以直接使用:obj._AttrName

    3、   子类无法覆盖父类__开头的属性

    注意的问题:

    1、   这种异常没有真正意义上的隐藏

    2、   这种变形在类定义阶段发生,定以后的赋值不会发生变形。

    3、   如果不想让子类覆盖自己的方法,可以将方法定义私有。

    封装的意义:

    1、   封装数据——明确区分内外,对外提供操作的接口和操作权限。

    2、   封装方法——隔离复杂度。用户只需通过简单的接口调用就可完成一系列操作。

     

    封装与扩展性

    封装在于明确区分内外,还使得类实现者可以修改封装内的东西而不影响外部调用者的代码。

    特性(propert)

        是一种特殊的属性,访问时会执行一段功能(函数)然后返回值。

         @Property、@setter、@deleter

    为什么要用特性?

         将一个类的函数定义成特性后,对象使用的时候,使用者无法察觉自己的调用方式,这种方式遵循了统一访问额原则。

    绑定方法与非绑定方法

    在类内部定义的函数分两大类

    1、    绑定方法(绑定给谁,就由谁来调用(把谁,作第一个参数传入))

    a)    绑定到类的方法:在类内部定义的,用classmethod装饰器装饰)

    b)    绑定到对象的方法:类内部定义,没有加任何装饰器。

    2、    非绑定方法:(用staticmethod装饰器装饰)

    不与类与对象绑定,类和对象都可以调用,但没有自动传值一说。

  • 相关阅读:
    TCP/IP,Http,Socket,XMPP的区别
    CygWin 常用命令
    js打印数组,js打印对象的方法
    中奖概率算法(php 可用于刮刮卡,大转盘等抽奖算法)
    sql语句优化
    求职简历怎么写,看看百度吐槽
    c#学习笔记之WPF Application和Windows Form Applications
    c#学习笔记之XML
    c#学习笔记之LINQ
    c#学习笔记之字符串和正则表达式
  • 原文地址:https://www.cnblogs.com/AYxing/p/9017083.html
Copyright © 2011-2022 走看看