python自动化开发学习第七天

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.方法
方法包括:普通方法,静态方法和类方法,三种方法在内存中都归属于类,区别在于调用方式不同。


以上是关于python自动化开发学习第七天的主要内容,如果未能解决你的问题,请参考以下文章

Python基础-第七天-面向对象编程进阶和Socket编程简介

python学习第七天

Python第七天

Python学习第七天

JAVA学习第七天——面向对象

python修炼第七天