python编程(类的使用)

来源:互联网 发布:js放大镜效果代码 编辑:程序博客网 时间:2024/06/05 21:51

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

    python从2.7版本更新到现在,新特性一直在增加,不过我还是建议大家在开发中尽量用一些基础的功能就可以了。一来基础的功能比较容易掌握,二来可以照顾到所有的同学,毕竟不同人对python理解是不一样的。

类的数据

1、super class保存的数据
2、sub class数据
3、全局数据
4、函数入口参数的数据

类的基本应用

    在面试过程中,关于class这一方面,问的最多就是类的特性是什么?这个问题不难,一般同学们都能回答出来,继承、封装、多态。可是在真实的场景中怎么使用,这却是一个不太容易回答的问题。我们可以从类的基本使用慢慢说来,

 class A(object):    def __init__(self, a):        self.a = a    def process(self):        print self.a

    上面代码是一个基本的情形,有变量,有函数。假设,这个时候,出现了B。B不仅包括了A的全部特征,还有一些自己的数据和行为,这个时候应该怎么修改呢?其实很简单,就是继承一下A。

 class B(A):    def __init__(self, a, b):        A.__init__(self, a)        self.b = b    def action(self):        print self.b

类的复杂应用

    前面说的情况都是一般的情况。那么,下面我们可以说一些额外的情况。假设B和A的情况是一样的,但是就是process操作不一样,这个时候应该怎么办呢?

class B(A):    def __init__(self, a):        A.__init__(self, a)    def process(self):        print 'data'

    如果说类的基本应用只是封装和继承,那么上面的应用基本就是多态了。可是,我们并不满足,可以继续讨论下去。如果只是一般的多态也没什么,可是如果我们想继续使用原来的操作,但是需要加上一点自己的代码,这个时候怎么修改?

class B(A):    def __init__(self, a):        A.__init__(self, a)    def process(self):        print 'data'        A.process(self)

    当然了,在原有的process function简单添加一些功能是可以的,但是如果遇到复杂的功能就要添加额外的function了,比如说如下所示,

class B(A):    def __init__(self, a):        A.__init__(self, a)    def process(self):        other_operation(self)        A.process(self)    def other_operation(self):        pass

其他提示

a)使用类特性的时候尽量简单
b)多采用组合的方法解决问题,而不是继承
c)类的代码写好后,多多提炼和修改,多总结和积累
d)类的使用只是服务于流程的抽象和代码的复用,牢记牢记

后面的话

    类因为丰富的特性,常常和设计模式绑定在一起。许多同学一谈到设计模式就眉飞色舞,恨不得把23种模式用个遍。其实设计模式为了逻辑抽象和代码复用提炼出来的一种方法,本质还是为了减少冗余代码,明晰业务逻辑,万不可因噎废食,自己把自己困住手脚,不在系统和业务层面下功夫,而在这些概念上吹毛求疵。

原创粉丝点击