yzjklove 发表于 2013-1-15 02:46:03

Python学习笔记(实用技巧)

一、如何实现系统的灵活扩展
    在实际的应用中,经常要考虑系统的扩展性。当一个系统定型并被打包发布后(甚至被转成了exe文件包后),想要在不破坏整体性的同时,又能方便的扩展(或调整)系统的功能,就像插件、补丁这些功能。
1. 使用类别名+外部文件来扩展内部类
    原理:在代码编写过程中,注意使用类别名。即在类的定义完成后,给类赋一个标准别名,然后在类的实现时使用这个标准别名来操作。在扩展时,执行一个外部文件,这个文件中对原类做了扩展,并将标准别名赋给这个扩展类,就可以实现功能扩展了。
    举个例子:
代码一:test.py
----------------------------------------------------------
import os
class OldClass:
    def __init__(self):
      print 'OldClass: init'   
    def Test(self, info):
      print 'OldClass: ' + info      
    def __del__(self):
      print 'OldClass: del'
# 定义了类OldClass,赋了别名TestClass      
TestClass = OldClass
if os.path.exists('plugin.py'):
    execfile('plugin.py')      
if __name__ == '__main__':
    T = TestClass()   
    T.Test('info')
    T = None
    print '-END-'
---------------------------------------------------------
代码二:plugin.py
---------------------------------------------------------
class NewClass(OldClass):   
    def Test(self, info):
      print 'NewClass: ' + info
# 定义了OldClass的子类NewClass,赋了别名TestClass         
TestClass = NewClass
---------------------------------------------------------
运行:在没有plugin.py时,执行了OldClass的Test方法,而在添加了plugin.py后,执行了NewClass的Test方法,这样我们只要修改外部文件plugin.py,就能达到不修改原始文件时扩展功能的目的。
页: [1]
查看完整版本: Python学习笔记(实用技巧)