博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python:面向对象
阅读量:4349 次
发布时间:2019-06-07

本文共 1821 字,大约阅读时间需要 6 分钟。

 

概述

  • 面向过程:根据业务逻辑从上到下写垒代码
  • 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
  • 面向对象:对函数进行分类和封装,让开发“更快更好更强...”

面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,即:将之前实现的代码块复制到现需功能处。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
while
 True
    
if
 cpu利用率 > 90%:
        
#发送邮件提醒
        
连接邮箱服务器
        
发送邮件
        
关闭连接
 
    
if
 硬盘使用空间 > 90%:
        
#发送邮件提醒
        
连接邮箱服务器
        
发送邮件
        
关闭连接
 
    
if
 内存占用 > 80%:
        
#发送邮件提醒
        
连接邮箱服务器
        
发送邮件
        
关闭连接

随着时间的推移,开始使用了函数式编程,增强代码的重用性和可读性,就变成了这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def
 发送邮件(内容)
    
#发送邮件提醒
    
连接邮箱服务器
    
发送邮件
    
关闭连接
 
while
 True
 
    
if
 cpu利用率 > 90%:
        
发送邮件(
'CPU报警'
)
 
    
if
 硬盘使用空间 > 90%:
        
发送邮件(
'硬盘报警'
)
 
    
if
 内存占用 > 80%:
        
发送邮件(
'内存报警'

创建类和对象

 

面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用。

  类就是一个模板,模板里可以包含多个函数,函数里实现一些功能

  对象则是根据模板创建的实例,通过实例对象可以执行类中的函数

  • class是关键字,表示类
  • 创建对象,类名称后加括号即可

ps:类中的函数第一个参数必须是self(详细见:类的三大特性之封装)

   类中定义的函数叫做 “方法”

1
2
3
4
5
6
7
8
9
10
11
12
13
# 创建类
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
3
4
5
6
7
8
9
class
 Dog(object):
 
    
print
(
"hello,I am a dog!"
)
 
 
d 
=
 Dog() #实例化这个类,
#此时的d就是类Dog的实例化对象
 
#实例化,其实就是以Dog类为模版,在内存里开辟一块空间,存上数据,赋值成一个变量名

上面的代码其实有问题,想给狗起名字传不进去。

1
2
3
4
5
6
7
8
9
10
11
12
13
class
 Dog(object):
 
    
def
 __init__(self,name,dog_type):
        
self
.name 
=
 name
        
self
.
type
 = dog_type
 
    
def
 sayhi(self):
 
        
print
(
"hello,I am a dog, my name is "
,
self
.name)
 
 
d 
=
 Dog('LiChuang',"京巴")
d.sayhi()

为什么有__init__? 为什么有self?   

画图之前, 你先注释掉这两句

1
2
3
4
# d = Dog('LiChuang', "京巴")
# d.sayhi()
 
print
(Dog)

没实例直接打印Dog输出如下

1
<
class
 '__main__.Dog'>

这代表什么?代表 即使不实例化,这个Dog类本身也是已经存在内存里的对不对, yes, cool,那实例化时,会产生什么化学反应呢?

 

 

 

 

转载于:https://www.cnblogs.com/wzy23/p/11466792.html

你可能感兴趣的文章
关于PHP程序员技术职业生涯规划
查看>>
Redis实战总结-Redis的高可用性
查看>>
修改bin目录下的文件导致session丢失的问题
查看>>
pymysql
查看>>
IOS 保存图片至相册
查看>>
【转】Key/Value之王Memcached初探:一、掀起Memcached的盖头来
查看>>
SIGSEGV
查看>>
深入Linux内核架构-进程管理和调度-脑图
查看>>
Hive函数大全
查看>>
js如何实现点击显示和隐藏表格
查看>>
杨辉三角
查看>>
Makefile研究 (一)—— 必备语法
查看>>
Sublime 取消每次自动更新弹窗设置
查看>>
Confuser.crproj
查看>>
.net core教程
查看>>
SparkContext的初始化(季篇)——测量系统、ContextCleaner及环境更新
查看>>
IOS - 消息推送原理和实现
查看>>
jQuery
查看>>
虚拟机安装CentOS 7 ping不通百度/并且使用Xshell 连接
查看>>
excel文件导入mysql
查看>>