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('自定义错误')  #主动触发错误
    查看源码

    作业   定义游戏角色,先定义人,然后设定人的功能、特征、工作、年龄、人种、国籍、性别、特长等信息

 

posted @ 2023-05-28 21:23  yuhankeji  阅读(24)  评论(0)    收藏  举报