Python面向对象三大特性之封装

面向函数的编程和面向对象编程对比

vim day7-2.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/python
# -*- coding:utf-8 -*-
def Bar():
    print 'Bar'
 
def Hello(name):
    print 'I am %s' %name
 
class Foo:
    def Bar(self):
        print 'Bar'
    def Hello(self,name):
        print 'I am %s' %name
 
 
Bar()
Hello('liuyueming')
 
obj = Foo()
obj.Bar()
obj.Hello('liuyueming')

  

通过函数和对象的方法实现同样的功能,看起来是面向函数的编程比较简单

假如是连接数据库的增,删,改,查操作使用面向对象的方法代码更加简单

vim day7-3.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/usr/bin/python
# -*- coding:utf-8 -*-
def fetch():
    #连接数据库,hostname,port,username,password,db,timeout...
    #打开
    #操作
    #关闭
 
def modify():
    #连接数据库,hostname,port,username,password,db,timeout...
    #打开
    #操作
    #关闭
 
def remove():
    #连接数据库,hostname,port,username,password,db,timeout...
    #打开
    #操作
    #关闭
 
def create():
    #连接数据库,hostname,port,username,password,db,timeout...
    #打开
    #操作
    #关闭
 
 
###方式二
class Foo:
    def __init__(self,hostnama,port,username,password,db,[11,22,33]):
        self.hostname = hostname
        self.port = port
    #...
 
    def fetch(self):
        pass
 
    def modify(self):
        pass
 
    def create(self):
        pass
     
    def removeself):
        pass
 
obj = Foo(hostnama,port,username,password,db,[11,22,33])
obj.fetch(hostnama,port,username,password,db,[11,22,33])

可以obj1 obj2等进行类的实例化,把不同的主机或端口封装在不同的类里面

把变量值封装到对象里面,使用的时候使用self调用

PS:以上功能可以使用装饰器实现

 

posted @   minseo  阅读(557)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示