python 自动化之路 day 08 面向对象进阶
2016-11-27 10:24
627 查看
面向对象高级语法部分
经典类vs新式类
静态方法、类方法、属性方法
类的特殊方法
反射
异常处理
classical vs new style:
经典类:深度优先
新式类:广度优先
super()用法
上面的代码仅在py2里有效,python3里怎么实现呢?
上面的调用会出以下错误,说是eat需要一个self参数,但调用时却没有传递,没错,当eat变成静态方法后,再通过实例调用时就不会自动把实例本身当作一个参数传给self了。
想让上面的代码可以正常工作有两种办法
1. 调用时主动传递实例本身给eat方法,即d.eat(d)
2. 在eat方法中去掉self参数,但这也意味着,在eat中不能通过self.调用实例中的其它变量了
航班查询
cool , 那现在我只能查询航班状态, 既然这个flight_status已经是个属性了, 那我能否给它赋值呢?试试吧
输出, 说不能更改这个属性,我擦。。。。,怎么办怎么办。。。
当然可以改, 不过需要通过@proerty.setter装饰器再装饰一下,此时 你需要写一个新方法, 对这个flight_status进行更改。
View Code
注意以上代码里还写了一个@flight_status.deleter, 是允许可以将这个属性删除
__class__ 表示当前操作的对象的类是什么
反射代码示例
动态导入模块
经典类vs新式类
静态方法、类方法、属性方法
类的特殊方法
反射
异常处理
面向对象高级语法部分
经典类vs新式类
把下面代码用python2 和python3都执行一下经典类:深度优先
新式类:广度优先
super()用法
抽象接口
静态方法
通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方法是不可以访问实例变量或类变量的,一个不能访问实例变量和类变量的方法,其实相当于跟类本身已经没什么关系了,它与类唯一的关联就是需要通过类名来调用这个方法1. 调用时主动传递实例本身给eat方法,即d.eat(d)
2. 在eat方法中去掉self参数,但这也意味着,在eat中不能通过self.调用实例中的其它变量了
航班查询
cool , 那现在我只能查询航班状态, 既然这个flight_status已经是个属性了, 那我能否给它赋值呢?试试吧
View Code
注意以上代码里还写了一个@flight_status.deleter, 是允许可以将这个属性删除
类的特殊成员方法
1. __doc__ 表示类的描述信息
2. __module__ 和 __class__
__module__ 表示当前操作的对象在那个模块__class__ 表示当前操作的对象的类是什么
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相关文章推荐
- python 自动化之路 day 面向对象基础
- python 自动化之路 day 07 面向对象基础
- python学习之路-8 面向对象之进阶
- Python自动化之面向对象进阶
- python 自动化之路 day 20 Django进阶/BBS项目【一】
- python 自动化之路 day 08_2 网络编程
- python之路 面向对象基础 XML
- python 面向对象进阶
- python 自动化之路 day 10 协程、异步IO、队列、缓存
- python 自动化之路 day 03
- python 自动化之路 day 05
- Python进阶三:面向对象基础
- 循序渐进Python3(七) -- 2-- 面向对象进阶
- python 自动化之路 day 04
- Python之路【第五篇】:面向对象及相关
- python 自动化之路 day 04.1 python内置函数
- Python开发【第七章】:面向对象进阶
- python 自动化之路 day 01 人生若只如初见
- python学习总结(面向对象进阶)
- python面向对象进阶 反射 单例模式