python老男孩第四课
本节内容 反射之第二 装饰器 面向对象编程 异常处理 断言
反射之第二
- 通过import 导入 可以理解为导入文件夹 getattr 导入文件或函数
装饰器
def outt(func): def wapper(arg): print('你好') reslt=func(arg) print('登陆成功') return reslt return wapper @outt def funcc(arg): print('你名字是:%s'%arg) return 123 aa=funcc('牛牛') print(aa)
def fun(): print('函数1') def fun1(): print('函数2') def outr(fun,fun1): def out1(fun2): def wrapper(arg): fun() print('欢迎光临') reslt=fun2(arg) print('登录成功') fun1() return reslt return wrapper return out1 @outr(fun,fun1) def func(arg): print('你好,%s'%arg) return 999 dd =func('牛牛') print(dd)
面向对象编程
- 类定义 class 类名称: def __init__(self): 构造函数(必须存在) 构造函数中构建的是动态字段 或私有字段(名字前加‘__’),私有字段只有类中方法(函数)可以访问,外面对象不能直接访问私有字段
- 静态方法 属于类 @staticmethod 函数中参数不能加self
- 特性 @property 对象调用字段的形式调用函数 此类需要继承object只读特性 @property 只写特性@函数名.setter
查看源码class Person: memo='类的字段' #静态字段 只属于类 def __init__(self,name,age): # 动态字段 只属于对象 self.name=name self.age=age def funcc(self): print('函数1%s'%self.name) @staticmethod #静态方法 函数后面不能跟self def funnc(): print('静态方法') @property #特性 函数用字段的形式调用 def bar(self): print('特性') p1=Person('牛牛',2) print(p1.name) p1.funcc() p1.bar Person.funnc()
- 私有方法 def __func(self): 私有方法 函数名前加'__’,私有方法只有内部方法才可以调用,外面对象不能直接调用
- 析构函数 def __del__(self): 对象销毁前执行的函数 一般用于文件句柄关闭
- def __call__(self) 利用对象()直接调用的就是call函数
- 类的继承 继承与重写 super(类名,selif).__init__() 调用父类的构造方法 父类需要继承object.
- 继承object 是新式类 深度优先(经典类)与广度优先(新式类)
- 抽象类
异常处理
- try: ..... except Exception:(出现异常执行) else: (没有出现异常执行) finally:(最后执行) else和finally 可以不需要
- 自定义异常
查看源码class Myexception(Exception): def __init__(self,arg): self.error=arg def __str__(self,*arg,**kargs): return self.error raise Myexception('自定义错误') #主动触发错误
作业 定义游戏角色,先定义人,然后设定人的功能、特征、工作、年龄、人种、国籍、性别、特长等信息

浙公网安备 33010602011771号