PYTHON概述

一:面向对象

1.什么是面向对象

面向对象是一种编写思想,是一种通过多个对象相互协作相互完成功能流程的编程思路,主要分为类的声明和定义,对象的创建和使用,它具有的特征有封装,继承,多态

2.为什么使用面向对象

程序的开发是为了软件的开发,软件的开发是为了解决问题

面向对象相对于面型过程来说,对相对比较复杂的业务来说,面向对象更占优势,对相对比较简单的业务来说,面向过程更好一点,当然在项目开发过程中,面向对象和面向过程一般是混合开发

 

二:类的声明和定义

类是数据类型的简称,可以将事物用代码的方式演绎

将事物抽象化

类的声明就是表示生活的事件,是一个概念,没有具体数据

操作步骤(是从大量的实际存在的物体中抽取他们拥有的共同特征以及行为):创建类型---定义特征--定义行为

操作规范:类型名称-帕斯卡命名法:一个或者多个单词组成

特征(属性)和行为(方法):尽量使用下划线命名法

def __init__(self)是创建好对象之后,初始化属性数据的方法,当创建对象之后,__init__()方法会自动执行

初始化公有属性的写法:self.name = name

之后定义行为

初始化私有属性的写法:self.__name = name

用函数设置封装私有属性:def set_name(self,name):

                                           self.__name = name

用函数访问私有属性 :def get_name(self):

                                            return self.__name

关于方法和函数:

函数是独立的,是一行或者多行代码,集合在一起形成的代码块,通过函数名称调用该函数,完成代码的功能

函数中可以声明几个形式参数,但是必须传递几个实际参数

方法是依赖类型的,和函数的定义是一样的,都是一行或者多行代码,集合在一起形成的代码块,但是它与函数不同的是

方法是通过(对象,名称)调用代码块,以此完成相应的功能

方法中的形式参数,第一个形式参数表示当前对象不需要传递参数,一般是默认,但是之后的形式参数,按照位置参数的方式传递数据

 

 

三:对象的定义与操作

对象是通过类型创建的,对象中会含有具体数据

对象的操作是类型存在的实际价值,对数据的处理

对象在代码中通过类型,创建,使用对象的行为和属性

对象的意义是在原来的方式下只是约定,并没有类型的详细确定,在面向对象里是有详细确定的

 

数据的整理:

变量中保存一个数据,表示一个复杂数据,可以通过多个变量存储多个数据实现

变量中保存一组数据,是通过组合数据类型来表示

对象中存储多个数据,表示复杂数据的专业操作方式

四  封装:

1.什么是封装

封装是对属性数据的安全保护,零散数据的统一整理,多种相似方法的统一整理,数据的保护,这些都需要封装

2.为什么需要封装?

为了保护敏感和隐私属性数据,让外界访问当前对象的属性数据时,可以按照指定的条件进行访问,为了提高属性数据的敏感性

3 怎么实现封装,封装的步骤

将当前类型中所有的属性私有化,给每个属性提供访问的属性数据的set/get方法

而且给敏感属性的访问方法中,添加限制条件

4.在那里使用封装?

任何出现在类型里的属性,都需要封装

5.封装的用法:
约定--约定如果一个属性是以一个下划线开头,则表示他是私有属性,不让直接操作

私有化————类型的属性,通过两个开头下划线,将属性表示私有数据,外界不能直接访问

可以通过提供的方法来访问

如果通过对象的引用变量,属性的直接赋值,该属性又不是类型中定义的属性

那么这个属性就是扩展属性,是专属于此对象的扩展属性

但是这样的扩展方式破坏了原来的封装语法,代码可读性下降,

我们可以在类型中定义好该对象可以出现属性,其他扩展属性可以不添加

7继承

继承的基本语法

体现的是一个小类型属于一个大类型的

生活中是约定

代码中是强制约束,通过继承关系,体现某类型属于另外一个类型

关于继承

Python中的所有类型都是直接或者间接继承object类型

Object:万物皆对象123456

Python3中类型声明语法分为隐式继承和显示继承

例如:class 类型名称 这就是隐式继承

                            Class 类型名称(object) 这就是显示继承

Python2中类型声明语法分为经典类和新式类

例如:class 类型名称  这就是经典类

                            Class 类型名称(object) 这就是新式类

继承的语法

Class 类型名称(要继承的类型)

继承的特性

代码中出现了继承,类型就出现了新名称

被继承的名称:父类

当前类型是子类

体现的是:子类继承父类

子类中就可以继承父类中的属性和方法(公共)

子类中可以直接使用父类的属性和方法

(运算符:类型判断运算符 isinstance 对象判断运算符 is)

子类类型使用父类数据

子类中访问父类的的方法:super().方法名称()

子类的__init__()方法

如果子类中没有写__init__方法,则直接使用父类的__init__方法初始化数据

如果子类中写了自己的__init__()方法,一定要调用父类中__init__()方法

当子类中出现独立属性的时候,子类需要写自己的__init__()方法

子类中可以重新定义父类中继承的方法(方法名称需要和方法参数一致):这就是方法重写

方法重写:子类中重写父类中存在的方法

              在执行过程中如果子类重写了方法,执行子类的方法,否则执行父类中的方法

在继承关系中,python中有两种事物的存在

数据类型————所有的类型都是直接继承type类型的

对象—所有的对象都是直接或者间接继承object类型的

Python中所有的数据都是直接或者间接继承type类型的

重点是区分类型和对象的区别

子类中如何访问父类属性,super().name

我们继承了父类的什么

构造方法

__new__ 创建对象的方法(一般不使用直接通过父类创建对象即可)

__init__ 初始化数据的方法,一般会重写该方法,用来初始化对象数据

__slots__ 封装时限制属性

__str__ 对象字符打印方式,默认情况打印内存16进制表示的位置

__repr__ 交互模式下字符打印方式

__hash__ 获取对象的hash数据,用于判断的依据

__ne__不等于,两个对象使用!=判断的

__ge__大于等于

__gt__ 大于

__le__ 小于等于

__lt__ 小于

__eq__ 等于

 

__dict__ 将对象转换为字典

__doc__ 说明文档

__class__ 类型,类似type

__setattr__给属性设置数据一般不重写

:param 这是一个放大的参数说明

10,多继承、体现的是在不同场景下,可能扮演不同的角色

(设计时多态)

多继承的问题

如果不同的父类出现了相同名称的属性和方法

子类会继承谁的属性或者方法

Python3中广度优先

Python2中深度优先

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值