Python全栈开发day9,,一、面向对象进阶
Python全栈开发day9,,一、面向对象进阶
一、面向对象进阶
1.利用python反射查看面向对象成员
对于对象:反射既可以找对象,类的成员
对于类:反射只能找类中的成员
2.利用反射操作模块(查找类,创建对象,查找对象中字段)
123456789 | #!/bin/env python |
3.类的静态字段
123456789 | #!/bin/env python |
注意:
类和对象都可以访问:静态字段,静态方法,普通字段,类方法,类的方法
推荐:
1、谁的成员谁访问
类的成员,用类来访问
对象的成员,用对象来访问
除了类中的方法(不要用类去访问类中的方法)
2.通过类访问:静态字段和静态方法,类方法。通过对象访问:普通字段,类的方法
4、类的静态方法
静态方法用类来访问
1234567891011121314151617 | #!/bin/env python |
5.类方法
1234567891011121314 | #!/bin/env python |
6.python类特性
获取值
1234567891011121314151617181920212223 | #!/bin/env python |
设置数值:
7.面向对象小结:
面向对象三大特性:封装,继承,多态
面向对象成员:
字段:静态字段(每个对象都有一份),普通字段(每个对象都是不同的数据)
方法:静态方法(无需使用对象封装的内容),类方法(和静态方法相同,会自动添加类名),普通方法(使用对象中的数据)
特性:普通特性(将方法伪造成字段)
快速判断谁执行:
self--->对象调用
无self--->类调用
8.python成员修饰符
成员修饰符:公有和私有
私有内容,在类外部无法调用(包括其子类),只能在当前class内部调用
123456789101112 | class |
Python外部访问私有内容(不推荐):
1234567891011121314 | #!/bin/env python |
9.Python面向对象中特殊方法:
__init__构造方法;封装普通字段
__del__析构方法;解释器销毁对象的时候,自动调用__del__
__call__如下图:
__getitem__
__setitem__
__delitem__
上图中:
ret[1:3]--->同样执行__getiteam__方法(类型为:slice)
ret[1:3]=[11,22,33]--->执行__setitem方法(类型为:slice)
__dict__查看对象中所有的字段(查看类中所有的成员)
__iter__
12345678 | class |
二、Python异常
简单例子:(python2.7)
123456 | try |
常见python异常:
AttributeError试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
IOError输入/输出异常;基本上是无法打开文件
ImportError无法引入模块或包;基本上是路径问题或名称错误
IndentationError语法错误(的子类);代码没有正确对齐(抓不住)
IndexError下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError试图访问字典里不存在的键
KeyboardInterruptCtrl+C被按下
NameError使用一个还未被赋予对象的变量
SyntaxErrorPython代码非法,代码不能编译(个人认为这是语法错误,写错了)抓不住
TypeError传入对象类型与要求的不符合
UnboundLocalError试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它
ValueError传入一个调用者不期望的值,即使值的类型是正确的
完整异常结构:
123456789101112 | try |
自定义异常:
12345678 | try |
Python全栈开发day9
相关内容
- 暂无相关文章
评论关闭