面向对象知识点


面向过程编程
一、解释
面向过程:核心是过程二字,过程即解决问题的步骤,基于面向过程去设计程序就像是在设计,流水线式的编程思想,
在设计程序时,需要把整个流程设计出来,一条工业流水线,是一种机械式的思维方式。

二、优缺点
优点:程序体系结构清晰,可以把复杂的问题简单化,流程化。
缺点:可扩展性差,一条流线只是用来解决一个问题,所以说面向过程的应用多为不需要经常变化的软件。
应用场景:linux内核, git, httpd, shell脚本

三、实例(利用程序函数进行面向过程编程)
过滤一个文件下的子文件、字文件夹的内容中的相应的内容,在linux中的命令就是grep -rl 'python' /etc
使用了python的包os里面的walk(),能够把参数中的路径下的文件夹打开并返回一个元组

>>> import os
>>> os.walk('D: est')
generator object walk at 0x0000000002ADB3B8

>>> os.walk('D:\test') # 以后使用这种路径方式,win下
>>> os.walk(r'D: est') # 使用r 是让字符串中的符号没有特殊意义,针对的是转义
出现错误,是因为路径的原因,但是在不同的机器上有的是可以的

>>> g=os.walk('D: est')
>>> next(g)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
以后推荐是用

>>> g=os.walk('D:\test')
>>> next(g)
('D:\test', ['a', 'b'], ['test.txt'])
返回的是一个元组,第一个元素是文件的路径,第二个是文件夹,第三个是该路径下的文件

1.2.1 程序流程
找文件路径 --os.walk
然后打开文件 --open
读取文件的每一行内容 -- for line in f
过滤一行内容中是否有Python if 'python' in line
打印包含Python的文件路径
程序是从上往下执行的,1产生的路径作为参数给2,2产生的给3...

实例请看:https://www.cnblogs.com/rendawei/p/7051145.html 博客

面向对象编程

概述:
对函数进行分类和封装,让开发“更快更好更强...”
面向对象编程是一种编程方式,此编程方式的落地需要使用“类”和“对象”来实现,所以,面向对象编程其实就是对
“类”和“对象”的使用。
类就是一个模板,模板里可以包含多个函数,函数里实现一些功能
对象则是根据模板创建的实例,通过实例对象可以执行类中的函数。
1.class是关键字,表示类
2.创建对象,类名称后加括号即可
PS:类中的函数第一个参数必须是self(详细见:类的三大特性之封装)
类中定义的函数叫做“方法”

# 创建类
class Foo:
def Bar(self):
print 'Bar'

def Hello(self, name):
print('i am %s' %name)

#根据Foo创建对象obj
obj = Foo()
obj.Bar() #执行Bar方法
obj.Hello('wupeiqi') #执行Hello方法

面向对象:[创建对象] [通过对象执行方法]
函数编程:[执行函数]
观察上述对比答案则是肯定的,然后并非绝对,场景的不同适合其的编程方式也不同。
总结:函数式的应用场景 --> 各个函数之间是独立且无共用的数据

面向对象三大特性:
面向对象的三大特性是指:封装、继承和多态。

一、封装
封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容。
所以,在使用面向对象的封装特性时,需要:
1.将内容封装到某处
2.从某处调用被封装的内容

# 封装实例
# 第一步:将内容封装到某处

# 创建类
class Foo:
def __init__(self, name, age): #称为构造方法,根据类创建对象时自动执行
self.name = name
self.age = age

# 根据Foo创建对象
# 自动执行Foo类的 __init__ 方法
obj1 = Foo('changhao', 20) #将changhao和20分别封装到 obj2 self的name和age属性中

# 根据类Foo创建对象
# 自动执行Foo类的 __init__ 方法
obj2 = Foo('changhao2', 22) #将changhao2和22分别封装到 obj2 self的name和age属性中

self是一个形式参数,当执行obj1=Foo('changhao',20)时,self等于obj1
当执行obj2 = Foo('changhao2',22)时,self等于obj2

所以,内容其实被封装到了对象obj1和obj2中,每个对象中都有name和age属性,在内存里类似于下图来保存。

参考此博客http://www.cnblogs.com/wupeiqi/p/4493506.html
定义类与实例化

属性查找与绑定方法

面向对象扩展性总结

继承与重用性

派生

继承的实现原理

在子类中重用父类的方法或属性

组合

抽象类与归一化

多态与多态性

封装
隐藏属性

封装意义

封装于扩展性

property的使用

绑定方法与非绑定方法
介绍
使用

反射

内置方法介绍

元类介绍

自定义元类控制类
创建
实例化行为
实例化行为的应用

什么是异常处理

try..except...详细用法










原文地址:https://www.cnblogs.com/changha0/p/8186383.html