• 面向对象高阶



    反射
    用户输入什么属性,直接调用该属性
    通过字符串,映射到属性上
    通过一个字符串来映射到(访问)对象的属性,叫做反射
    choice = input(">>")
    print(obj.choice)

    hasattr(obj,"name") #判断obj下有没有“name”属性
    getattr(obj,'name',None) #拿到obj对象的‘name’属性,没有返回None
    setattr(obj,'name','alex') 本质上是obj.name ='alex' 赋值
    delattr(obj,"age') #del obj.age


    内置方法
    iterm系列
    将对象模拟成字典去操作它的属性

    元类
    exec()相当于一个函数去执行,里面的变量是局部变量

    #一切皆对象,对象可以这么用
    1,都可以被引用,x=obj
    2,都可以当做函数的参数传入
    3,都可以当做函数的返回值
    4,都可以当做容器类的元素
    但凡有了这四个用法,就是对象
    类也是对象,产生类的类,就是元类,默认所有用class定义的类,他们的元类都是type
    定义类的两种方式
    1,class
    2,type
    exec(class_body,globel(),class_dic)
    Chinese = type(class_name,class_base,clsee_dic) #类的名字,类的基类,类的名称空间

    自定义元类控制类的创建
    继承type,重写__init__()

    内置方法

    元类

    #__call__方法
    使对象可调用
    class Foo:
    def __call__(self,*args,**kwargs)
    造出空对象
    obj= object.__new__(self)
    初始化obj
    self.__init__(obj,*args,**kwargs) 
    返回obj 
    return obj 

    obj = Foo()
    实例化对象有三步
    造出空对象
    初始化obj
    返回obj 

    obj(1,2,3,a =1)
    元类内部也应该有一个__call__方法,会在调用Foo时触发执行

    自定义元类控制类的实例化行为的应用
    单例模式
    实现多次实例化,得到的对象都是一样


    面向对象软件开发
    1抽象化类,理清类与类之间的关系

    现实中没有逻辑这个类
    定义一些现实中本来不存在的类
    通常属性是名词
    方法是动词

  • 相关阅读:
    window10-jmeter安装
    软件开发模型
    软件测试的原则和流程
    手机APP测试
    优秀的软件测试工程师
    自动化测试
    测试用例
    软件测试功能分类
    ios-prefix文件最全
    催收策略及催收评分卡搭建
  • 原文地址:https://www.cnblogs.com/leiyiming/p/9194451.html
Copyright © 2020-2023  润新知