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种模式用个遍。其实设计模式为了逻辑抽象和代码复用提炼出来的一种方法,本质还是为了减少冗余代码,明晰业务逻辑,万不可因噎废食,自己把自己困住手脚,不在系统和业务层面下功夫,而在这些概念上吹毛求疵。
- python编程(类的使用)
- 初次使用Eclipse下的Python编程
- 使用Tkinter做python的GUI编程
- python中socket编程poll的使用
- 初次使用Eclipse下的Python编程
- Python GUI编程 TKinter 的基本使用
- Python编程中NotImplementedError的使用
- Python - 开始使用Python编程
- 【Python】Python 的图形界面(GUI)编程
- Python基础编程(三)使用字符串
- 使用 Python 进行线程编程 线程的使用模式
- python 类的使用
- python 类的使用
- Python 类的使用
- Python类的使用
- Python:使用threading模块实现多线程编程三[threading.Thread类的重要函数]
- Python:使用threading模块实现多线程编程三[threading.Thread类的重要函数]
- python第23篇之-最简单的类使用(面向对象编程)
- 简单可持久化数据结构总结
- ListView
- Halide学习笔记----Halide tutorial源码阅读11
- 01MTALAB绘制sigmoid函数图像
- win10+python3.6(anaconda3.6)+pycharm3.1+opencv3.3.1+Tensorflow
- python编程(类的使用)
- 知识学习——Java基础类库
- bzoj1015 luogu1197 JSOI2008
- HTML 五角星——— Cavnas 坐标滚动法
- 使用C重写jieba结巴分词库,大幅提速50%-60%
- 数组
- 数据科学入门.pdf 免费下载
- 直播通过rman将oracle 12c整库全备后进行异机同目录恢复遇到的小坑
- sdut 2055