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

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

vim day7-2.py

#!/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

#!/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:以上功能可以使用装饰器实现

原文地址:https://www.cnblogs.com/minseo/p/6900120.html