Day7 - Python基础7 面向对象编程进阶
Python之路,Day7 - 面向对象编程进阶
本节内容:
- 面向对象高级语法部分 经典类vs新式类
- 静态方法、类方法、属性方法
- 类的特殊方法
- 反射
面向对象高级语法部分
经典类vs新式类
把下面代码用python2 和python3都执行一下
classical vs new style:
- 经典类:深度优先
- 新式类:广度优先
- super()用法
抽象接口
上面的代码仅在py2里有效,python3里怎么实现呢?
静态方法
通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方法是不可以访问实例变量或类变量的,一个不能访问实例变量和类变量的方法,其实相当于跟类本身已经没什么关系了,它与类唯一的关联就是需要通过类名来调用这个方法
上面的调用会出以下错误,说是eat需要一个self参数,但调用时却没有传递,没错,当eat变成静态方法后,再通过实例调用时就不会自动把实例本身当作一个参数传给self了。
想让上面的代码可以正常工作有两种办法
1. 调用时主动传递实例本身给eat方法,即d.eat(d)
2. 在eat方法中去掉self参数,但这也意味着,在eat中不能通过self.调用实例中的其它变量了
加上构造方法So ,孩子记住,类 是由 type 类实例化产生
那么问题来了,类默认是由 type 类实例化产生,type类中如何实现的创建类?类又是如何创建对象?
答:类中有一个属性 __metaclass__,其用来表示该类由 谁 来实例化创建,所以,我们可以为 __metaclass__ 设置一个type类的派生类,从而查看 类 创建的过程。
判断object中有没有一个name字符串对应的方法或属性
def setattr(x, y, v): # real signature unknown; restored from __doc__ """ Sets the named attribute on the given object to the specified value. setattr(x, 'y', v) is equivalent to ``x.y = v''
class Foo(object): def __init__(self): self.name = 'wupeiqi' def func(self): return 'func' obj = Foo() # #### 检查是否含有成员 #### hasattr(obj, 'name') hasattr(obj, 'func') # #### 获取成员 #### getattr(obj, 'name') getattr(obj, 'func') # #### 设置成员 #### setattr(obj, 'age', 18) setattr(obj, 'show', lambda num: num + 1) # #### 删除成员 #### delattr(obj, 'name') delattr(obj, 'func')
动态导入模块
异常处理
参考 http://www.cnblogs.com/wupeiqi/articles/5017742.html
Socket 编程
参考:http://www.cnblogs.com/wupeiqi/articles/5040823.html
作业:开发一个支持多用户在线的FTP程序
要求:
- 用户加密认证
- 允许同时多用户登录
- 每个用户有自己的家目录 ,且只能访问自己的家目录
- 对用户进行磁盘配额,每个用户的可用空间不同
- 允许用户在ftp server上随意切换目录
- 允许用户查看当前目录下文件
- 允许上传和下载文件,保证文件一致性
- 文件传输过程中显示进度条
- 附加功能:支持文件的断点续传
分类: Python自动化开发之路 好文要顶 关注我 收藏该文 金角大王
关注 - 0
粉丝 - 639 +加关注 1 0 « 上一篇:Python Select 解析 posted @ 2016-02-24 15:32 金角大王 阅读(2539) 评论(1) 编辑 收藏
- Python开发基础-Day7-闭包函数和装饰器基础
- Python之路,Day7 - 面向对象编程进阶
- 课程作业——Python基础之使用turtle库画出红旗
- Python 基础回顾(五)
- Python 循序渐进教程系列 之基础01
- 【脚本语言系列】关于Python基础知识兼容Python 2.x+Python 3.x,你需要知道的事
- Python基础:模块
- 重温python基础3:函数
- python基础===字符串的制表,换行基础操作
- python基础——filter函数
- python基础-迭代器和生成器
- 零基础入门学习Python(21)--函数:lambda表达式
- Python3 基础语法
- Day5-python基础之函数(二)
- python基础===map和zip的用法
- python基础练习(三)
- 【备忘】python从0基础到前端到后端的开发视频教程下载
- python3基础之文件操作
- 【Python基础教程笔记(二)】字典,条件,循环和其他语句
- 一些基础Python基础用法--采自《Python核心编程》