day4
2015-09-01 20:37:23 0 举报
AI智能生成
阳光穿透窗户,洒在清晨的床单上,一天又开始了。我打开眼睛,看着天花板,思考着今天要做的事情。早餐是热腾腾的面包和咖啡,简单而满足。我穿上衣服,走出家门,感受着清新的空气和微风。街上的人们忙忙碌碌,每个人都有自己的目的地。我走进办公室,开始了一天的工作。午餐是外卖的披萨,虽然简单,但是味道很好。下午的工作比较轻松,我在办公室里喝着咖啡,看着窗外的风景。下班后,我去健身房锻炼身体,然后回家做晚餐。晚餐是自己做的中国菜,虽然不如外面的餐厅好吃,但是很有成就感。晚上,我坐在沙发上看电视,享受着属于自己的时间。这就是我的一天,平淡而充实。
作者其他创作
大纲/内容
类(ls1)
静态字段: 类数据属性
classname.classAttribute
动态字段:实例自己的属性
实例可以访问类属性和实例属性,不能通过类访问实例属性
instance.classAttribute
instance.instanceAttribute
静态方法
1、在方法前加装饰器:@staticmethod
2、把括号中的self去掉
静态方法做什么用
类中的静态方法可以用模块来实现:类名作模块名,方法作为函数,这样也不需要实例。可以直接调用
类中使用静态方法实现的效果和使用函数模块的效果一样
省去实例化的过程
className.staticMethod() modelName.functionName()
类中静态方法只是在逻辑上都属于类的,别的方面和用模块实现的是一样的
可以通过类名直接调用,免去实例化的过程
className.staticMethod()
className.staticMethod()
动态方法
通过实例调用方法,不能通过类调用
instance.staticMethod()
instance.dynamicMethod()
特性
在方法上加装饰器:@property 不需要去掉self(可读)
instance.method 特性的访问不需要在方法名后加括号()
可读、可写特性用于访问和修改私有字段
在方法上加装饰器:@方法名称.setter (可改)
类没有继承object时加装饰器@property后成为方法的特性是可读可写的
继承了object的是要加@property和@方法名称.setter才是可读可写的
必须先有可读特性,然后再有可写特性
可读可写特性的函数名必须一致
实例可以访问类属性和实例属性,类不可以访问实例属性,实例可以调用动态方法和静态方法。类不可以访问动态方法
属性访问(动态、静态):instance.attribute、方法调用(动态、静态):instance.method()、特性访问;instance.method
私有字段和私有方法(ls3)
私有属性:__attribute
不能通过外部调用访问,如:print instance.__attribute
可以在类内部通过定义公有方法进行访问,如__str__方法中self.__attribute
私有方法:__method
同样不能通过外部调用:instance.__method()
可以在类内部通过定义公有方法调用访问self.__method()
不想给外部调用,只能在类内部调用和使用的
私有属性不能想普通属性一样调用显示,只能通过特性的方法进行显示和修改
几个特殊方法(ls4)
构造函数
__init__ 初始化实例
析构函数
__del__ 销毁内存,最后执行
实例函数
__call__ 执行类实例的函数时调用此方法
继承(ls4)
子类继承父类的属性方法,子类里面执行父类的方法:fatherClass.method(self)
不想继承的父类的方法或属性,可以在子类里定义覆盖父类的属性、方法(重写)
子类可以调用父类的方法
子类里面调用父类的构造函数
fatherClass.__init__(self)
super(son,self).__init()
通过super函数调用父类
可以多继承(B,C)先在B里面找,在去C里面找
object(经典类.py)
有object:新式类
无object经典类
经典类继承时深度优先,新式类广度优先
第二中接口:规范
用类去实现接口时候,类里面必须实现接口里面的方法
抽象类+抽象方法=接口
定义一个类去,在类里面写出要求的方法,但方法下面不写具体代码;
然后同在通过定义刚才这个类的子类去去实现它的父类里面要求的方法
异常处理
捕捉异常、并处理异常
扑捉异常时候可以用多个except 分别扑捉多个异常
except 异常名字,e:
也可以在一个except里面多个异常,用小括号括起来,用逗号分开(exception1,exception2,...),(可选,用一个变量e 来接收异常)
扑捉所有类型的异常:except Exception,e:
else;没有发生异常的时候执行
finally:无论是否发生异常都要执行
自定义异常(ls5,ls6)
主动触发异常:raise
自定义的异常类都是Exception的子类
自定义异常类用于描述python中没有涉及的情况
自定义的异常要主动去触发
用自定义异常配合系统自带异常一起使用来处理异常
装饰器
装饰器和被装饰函数之间用:@装饰器函数名
装饰器(函数)
1、用被装饰函数作为参数
2、装饰器函数内部在定义一个函数
3、函数体内执行被装饰函数和装饰内容
4、返回内层函数
@装饰器函数名
被装饰函数
执行过程(Dbug模式运行)
函数逐步执行,遇到@装饰器名之后会把之后的函数作为参数传给装饰器
然后把整个内层函数作为返回值返回
相当于把整个内层函数赋给 :被装饰函数
此时调用执行的是被装饰后的函数
被装饰函数
不带参数
带参数
装饰器的内层函数也要带个和被装饰函数一样的参数
调用函数也要带参数
由于调用执行的是被装饰后的函数
被装饰函数带参数,则返回的新函数(装饰器内层函数)也要带参数
被装饰函数有返回值
被装饰函数有返回值,可以对其进行装饰后,返回原函数的返回值
可以在被装饰函数前后执行任意函数,它们是当作参数传入进去的。
装饰器本身是一个函数,用于装饰其他函数
一般接受一个函数作为参数
反射
导入
from packagename import model
==== improt packagename.model
等价于: space=__improt__('packagename.'+modelNameStr)
执行
import packagename.model---------------packagename.model.(函数或者方法)
model=getattr(space,modelNamStr)
func=getattr(model,(函数名或者方法对应的字符串))
反射: 根据你给定的字符串的不同导入不同的模块执行不同的请求
0 条评论
下一页