Python,面向对象

语言的分类:

                    面向机器:抽象成机器指令,机器容易理解

                    代表:汇编语言

                    面向过程:做一件事情,排出个步骤,第一步干什么,第二部干什么,如果出现情况A,做什么处理,如果出现了情况B,做什么处理

                    代表:C语言

                    面向对象OOP:随着计算机需要解决的问题的规模扩大,情况越来越复杂,需要很多人,很多部门协作,面向过程变成不太适合

                    代表:C++,Java,Python等

面向对象:

                什么是面向对象呢?

                一种认识世界,分析世界的方法论,将万事万物抽象为类class

                类是抽象的概念,是万事万物的抽象,是一类事物的共同特征的集合。

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

                用计算机语言来描述类,就是属性和方法的集合。

                对象instance,object

                对象是类的具象,是一个实体

                属性:它是对象状态的抽象,用数据结构来描述

                操作:它是对象行为的抽象,用操作名和实现该操作的方法来描述。

面向对象的3要素:

  •                              封装:组装:将数据和操作组装到一起。
  •                                        隐藏数据:对外只暴露一些借口,通过接口访问对象
  •                              继承:多复用,继承来的就不用自己写了
  •                                         多继承少修改,OCP(Open-closed Principle),使用继承来改变,来体现个性
  •                              多态:面向对象编程最灵活的地方,动态绑定

Python的类:

                    定义:class ClassName:

                                    语句块

                    必须使用class关键字,类名最好使用大驼峰命名,类定义完成后,就产生了一个类对象,绑定到了标识符ClassName上

类对象及类属性:

                           类对象,类的定义就会生成一个类对象

                           类的属性,类定义中的变量和类中定义的方法都是类的属性

实例化:a = Myclass():在类对象名称后面加上一个括号,就调用类的实例化方法,完成实例化,实例化就真正创建一个该类的对象

__init__方法:MyClass()实际上调用的是__init__(self)方法,可以不定义,如果没有定义会在实例化后隐式调用。

作用:对手实例进行初始化,__init__()方法不能有返回值,也就是只能是return None

实例对象instance:

                              类实例化后一定会获得一个对象,就是实例对象。

                              类实例化后,得到一个实例对象,实例对象会绑定方法,调用方法采用jerry。showage()的方式

实例变量是每一个实例自己的变量,是自己独有的;类变量是类的变量,是类的所有实例共享的属性和方法

特殊属性 含义
__name__ 对象名
__class__ 对象的类型
__dict__ 对象的属性的字典
__qualanme__ 类的限定名

注意:Python中的美一种对象都拥有不同的属性。函数。类都是对象,类的实例也是对象

总结:是类的,也是这个类所有实例的,其实例都可以访问到;是实例的,就是这个实例自己的,通过类访问不到。

           类变量是属于类的变量,这个类的所有实例可以共享这个变量

           对象(实例或类)可以动态的给自己增加一个属性,实例的同名变量会隐藏掉类变量,或者说是覆盖这个类变量

实例属性的查找顺序:

                                  指的是实例使用 . 点号来访问属性,会先找知己的__dict__,如果没用,然后通过属性__class__找到自己的类,再去类的__dict__

访问控制:

                私有(Private)属性:使用双下划线开头的属性名,就是私有属性

                私有变量的本质:类定义的时候,如果声明一个实例变量的时候使用双下划线,Python解释器会将其改名,转换名为_类名_变量名的名称,所以用原来的名字就访问不到了。

                保护变量:在变量名前使用一个下划线,称为保护变量。

方法重载(overload):

                                     其他面向对象的高级语言中,会有重载概念

                                     所谓重载,就是同一个方法名,但是参数数量,类型不一样,就是一个方法的重载

                                     Python没有重载!Python不需要重载!

                                     Python中,方法(函数)定义中,形参非常灵活,不需要指定类型(就算指定了也只是一个说明而非约束),参数个数也不固定(可变参数)。一个杉树的定义可以实现很多种不同形式实参的调用。所以python不需要方法的重载。

                                     或者说Python本身就实现了其他语言的重载。

封装:

         面向对象的三要素之一,封装Encapaulation

         封装:将数据和操作组织到类中,即属性和方法

                    将数据隐藏起来,给使用者提供操作(方法)。使用者通过操作就可以获取或修改数据,getter和setter。

                    通过访问控制,暴露适当的数据和操作给用户,该隐藏的隐藏起来,例如保护成员或私有成员

猜你喜欢

转载自blog.csdn.net/Futures_/article/details/82693352