python自动化开发学习【第七天】

面向对象简介

  • a.面向过程:根据业务逻辑从上到下编写代码。
  • b.函数式编程:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可。
  • c.面向对象:对函数进行分类和封装。

注:java和C# 都只支持面向对象编程,python比较灵活即支持面向对象也支持函数式编程。

创建类和对象
面向对象编程时一种编程方式,通过使用“类”与“对象”来实现,所以面向对象其实就对“类”与“对象”的使用。

  • a.类就是一个模板,模板可以包含多个函数,函数里实现一些功能。
  • b.对象则是根据模板创建的实例,通过实例对象可以执行类中的函数。
1 class Foo:     # class关键字,表示要创建类,类的名字为Foo
2   def bar(self):  # def关键字,创建一个函数(也叫方法),bar是函数名,self为特殊参数必须有!!!self一般指向对象
3   pass      # 函数内容
4 obj = Foo()  # 根据类Foo创建对象obj
5 obj.bar()     # 执行bar方法

面向对象和函数式编程执行一个函数区别

  • a.面向对象:先创建对象,然后通过对象执行方法(函数)
  • b.函数式:直接执行函数

# 看似函数式编程更加简单,实际不然,场景不同适用的编程方式也不同,函数式编程多用于各个函数之间独立且无共用的数据。

面向对象三大特性(封装,继承,多态)

1.封装
封装,将内容封装到某个地方,以后再去调用被封装在某处的内容。
1):将内容封装到某处
# 示例:

1 class Foo: # 创建类
2   def __init__(self, name, age): # 称为构造方法,根据类创建对象时自动执行,self代表了对象
3     self.name = name
4     self.age = age
5   def detail(self): # 创建一个detaill方法
6     print(self.name)
7     print(self.age)

# 流程:根据类Foo创建对象,自动执行Foo类的__init__方法
obj1 = Foo(‘wu‘, 22) # 将wu和22分别封装到obj1/self的name和age属性中
# 流程,每次实例化对象时,都会自动执行构造方法
obj2 = Foo(‘alex‘, 22) # 将alex和22分别封装到obe2/self的name和age属性中
# self是一个形式参数,当执行obj1时,self等于obj1;当执行obj2时,self等于obj2
2):从某处调用被封装的内容
调用被封装的内容时,有两种情况:

  • a.通过对象直接调用:obj1.name # 直接调用obj1对象的name属性
  • b.通过self间接调用:obj2.detail() # python默认将obj2传递给self,即:obj2.detail(obj2),方法内部self=obj2

综上所诉,对于面向对象的封装来说,其实就是使用构造方法将内容封装到对象中,然后通过直接或self间接获取封装内容。

2.继承
继承,面向对象中,子类可以继承父类,除了子类和父类还有称之为派生类和基类。叫法不同而已。
个人理解:子类将继承所有子类没有而父类有的所有方法和构造方法,当然如果子类和父类都有,则优先使用子类自己的,
在子类运行父类的方法或构造方法时,self指向还是自己的对象。
1).单继承

1 # 单继承代码格式:
2 class 父类:
3   def 父类的方法(self):
4     pass
5 class 子类(父类): # 在括号中写上索要继承的父类,子类继承了父类即拥有父类所有的方法
6   def 子类的方法(self):
7     pass
8 obj = 子类() # 创建子类的对象
9 obj.父类的方法() # 执行从父类继承的方法

2).多继承 # 多继承代码格式:
1.python的类可以继承多个类,java和C# 中只能继承一个类
2.python的类如果要继承多个类,那么在寻找方式有两种,分别是深度优先和广度优先

  1. 当类是经典类时,多继承情况下,会按照深度优先方式查找
  2. 当类时新式类时,多继承情况下,会按照广度优先方式查找

3.经典类和新式类,新式类包含了更多的功能,也是之后推荐的写法,从写法上区别,当前类或者父类继承了Obejct类,
那么该类便是新式类,否则便是经典类。
# 示例:

 1 class C1: # C1是经典类
 2   pass
 3 class C2(object): # C2是新式类
 4   pass
 5 class C3(C2): # C3继承了C2,那么也是新式类
 6   pass
 7 class C4(C1): # C4继承了C1,那么也是经典类
 8   pass
 9 class C5(C2,C1): # C5继承了C2,C1两个父类,优先继承C2这个父类,按顺序继承
10   pass

3.多态
python不支持多态并且也用不到多态,多态用于java和C# 这一类强类型语言中,而Python崇尚“鸭子类型”

类的成员(字段,方法,属性)
1.字段
字段包含:普通字段和静态字段,在使用中有所区别,最本质的区别是内存中保存的位置不同。
普通字段属于:# 对象
静态字段属于:# 类
# 示例代码:

 1 class Province:
 2   # 静态字段
 3   country = ‘中国‘
 4
 5   def __init__(self,name):
 6     # 普通字段
 7     self.name = name
 8 #直接访问普通字段
 9 obj = Province(‘河北省‘)
10 print(obj.name)
11 #直接访问静态字段
12 Province.country

2.方法
方法包括:普通方法,静态方法和类方法,三种方法在内存中都归属于类,区别在于调用方式不同。

时间: 2024-12-31 03:24:35

python自动化开发学习【第七天】的相关文章

Python自动化开发学习12-MariaDB

关系型数据库 主流的关系型数据库大概有下面这些: Oracle : 甲骨文公司的企业级的数据库 SQL Server : 微软的 MySQL : 免费的数据库,现在也属于Oracle的旗下产品 MariaDB : 开源的数据库,MySQL的一个分支 PostgreSQL : 也是开源的 SQLite : 一款轻量级的数据库 DB2 : IBM的 RDBMS 术语 RDBMS(Relational Database Management System)即关系数据库管理系统,在开始之前,先了解下RD

Python自动化开发学习19-Django

接下来,我们把Django分为视图(View).路由系统(URL).ORM(Model).模板(Templates )这4块进行学习. 视图 提交数据 上节课已经用过 request.POST.get() 获取提交的数据了,现在来看看有多选框的情况,多选的话应该要提交多个数据.先写一个有单选.多选.下拉列表的html: <body> <form action="/choice/" method="post"> <p> 性别: &l

Python自动化开发学习20-Django

ORM 一边写一个示例,一边回顾一下之前的内容,引出新的知识点展开讲解 回顾-创建项目 下面就从创建项目开始,一步一步先做一个页面出来.一.先创建一个新的Django项目项目名是:week20,App名是:app01因为是通过PyCharm创建的项目,创建的时候填上了 app name .所以PyCharm帮我么创建好了app同时也完成了注册.否则就去settings.py里面手动添加注册app INSTALLED_APPS = [ 'django.contrib.admin', 'django

python自动化开发学习-9 socket网络编程

一. 简介 python提供了两个级别访问的网络服务: 低级别的网络服务支持节本的socket,它提供了标准的BSD sockets API,可以访问底层操作系统socket接口的全部方法. 高级别的网络服务模块socketserver,它提供了服务器中心类,可以简化网络服务器的开发. socket介绍 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. socket起源于Unix

Python自动化开发学习4-3

JSON 和 pickle 序列化:把数据对象变成字符串的形式,这样可以保存在文件中.反之就是反序列化 python自带的str()可以完成序列化,然后eval()可以反序列化,但是我们先把他们忘记.不知道适用范围是多大. 我们用json的规范来做序列化和反序列化. import json dica = {'name':'Alice',         'age':18,         'from':'ShangHai'         } stra = json.dumps(dica)  #

Python自动化开发学习5

模块 在模块中,我们可以定义变量.函数,还有类(这个还没学到).总之应该就是所有的代码.先建一个文件,取名为module,py,内容如下: # 一下是module.py的内容 string = "This is module,py" def say_hi():     print("Hi") def test():     return "test in module.py" 在上面的模块中我们定义了1个变量和2个函数,现在我们要在另外一个文件中

Python自动化开发学习14

Web的三个层次 网页设计思路是把网页分成三个层次,即:结构层(HTML).表示层(CSS).行为层(Javascript).形象的比喻,先是HTML捏了一个人,然后CSS则是给人穿上衣服,最后通过JS让人动起来. Web服务的本质 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端.用户向服务器发送一个请求.然后服务器响应,将数据和格式发回给客户端,然后断开这个连接.客户端收到返回的数据后,通过浏览器将数据按照一定的格式呈现出来.整个过程就是

Python自动化开发学习15-JavaScript和DOM

初识JavaScript JavaScript(后面都简写为js)是一门独立的语言.浏览器本身就具有js解释器. js的存在形式 和css类似,js代码要放在<script>标签中.同样和css类似,还可以写在一个js文件中,比如文件名就叫 commons.js ,然后在head中引入 <script src="commons.js"></script> ,src的值就是js的文件路径.<script type="text/javas

Python自动化开发学习16-前端内容综合进阶

css补充 这里再补充几个css的知识点,下面会用到 最小宽度-min-width 设置元素的最小宽度.举例说明,比如设置一个百分比的宽度,那么元素的宽度的像素值是会随着页面大小而变化的.如果设置一个最小的像素宽度,那么当变化到最小值之后,不会继续变小.在下面的例子中,会出现滚动条,保证元素的宽度: <body> <div style="height: 80px;width: 100%;background-color: blue;min-width: 800px;"