• Python面向对象编程


    本篇内容:

    •   1、反射
    •   2、面向对象编程
    •   3、面向对象三大特性
    •   4、类成员
    •   5、类成员修饰符
    •   6、类的特殊成员
    •   7、单例模式

    反射

    python中的反射功能是由以下四个内置函数提供:hasattr、getattr、setattr、delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员、获取成员、设置成员、删除成员。

    1. import commas同等于下面字符串导入模块
    2. inp = input("请输入模块名:")
    3. dd = __import__(inp)
    4. ret =dd.f1()
    5. print(ret)
    6. 通过字符串的形式导入模块

     通过字符串的形式导入模块

    1. #应用根据用户输入导入模块
    2. inp = input("请输入模块:")
    3. inp_func = input("请输入执行的函数:")
    4. # __import__以字符串的形式导入模块
    5. moudle = __import__(inp)
    6. #getattr 用以去某个模块中寻找某个函数
    7. target_func = getattr(moudle,inp_func)
    8. relust = target_func()
    9. print(relust)
    10. 指定函数中执行指定函数

     指定函数中执行指定函数

    1、getattr
    
    通过字符串的形式去某个模块中寻找东西
    1. import commas
    2. #去commas,寻找name变量,找不到返回none
    3. target_func = getattr(commas ,"name",None)
    4. print(target_func)
    5. demo

     demo

    2、hasattr
    
    通过字符串的形式去某个模块中判断东西是否存在
    1. import commas
    2. #去commas模块中寻找f1,有返回true,没有返回none
    3. target_func = hasattr(commas,"f1")
    4. print(target_func)
    5. demo

     demo

    3、setattr
    通过字符串的形式去某个模块中设置东西
    1. import commas
    2. #去commas模块中寻找name,有返回true,没有返回none
    3. target_func1 = hasattr(commas,"name")
    4. print(target_func1)
    5. #在内存里往commas模块中添加name = "zhangyanlin"
    6. setattr(commas,"name","zhangyanlin")
    7. #在内存里往commas模块中创建函数
    8. setattr(commas,"f3",lambda x: "zhen" if x >10 else "jia")
    9. #去commas模块中寻找name,有返回true,没有返回none
    10. target_func = hasattr(commas,"name")
    11. print(target_func)
    12. demo
    1. import commas
    2. #去commas模块中寻找name,有返回true,没有返回none
    3. target_func1 = hasattr(commas,"name")
    4. print(target_func1)
    5. #在内存里往commas模块中添加name = "zhangyanlin"
    6. setattr(commas,"name","zhangyanlin")
    7. #在内存里往commas模块中创建函数
    8. setattr(commas,"f3",lambda x: "zhen" if x >10 else "jia")
    9. #去commas模块中寻找name,有返回true,没有返回none
    10. target_func = hasattr(commas,"name")
    11. print(target_func)
    4、delattr
    1. import commas
    2. target_func = hasattr(commas,"f1")
    3. print(target_func)
    4. del_func = delattr(commas,"f1")
    5. target_func = hasattr(commas,"f1")
    6. print(target_func)
    7. demo

     demo

      案例:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    '''

    基于web框架实现路由功能

    '''

    url = str(input("请输入URL:"))  #输入URL,先输入模块,后面加函数

    target_moudle,target_func = url.split("/"# 用/把分割开,前面是模块 后面是函数

    moudle = __import__(target_moudle,fromlist=True)  #导入模块

    if hasattr(moudle,target_func):   #判断模块里有这个函数

        target_func = getattr(moudle,target_func)   #找到那个函数

        ret = target_func()   #执行函数

        print(ret)

    else:                 #否则报错

        print("404") 

  • 相关阅读:
    (vue)数组对象去重
    怎么利用大厂的API将大段音频转成文本
    win11安装docekr、docker-compose
    C#(Csharp)我的基础教程(一)(我的菜鸟教程笔记)-构造方法学习与探究
    openstack基本命令小结
    用Cmake快速生成vs工程
    【Swift 60秒】60 - Creating your own structs
    1.2 极限的性质【极限】
    2013年12月12日 Go生态洞察:深入Go Playground的内部实现
    rpmbuild 包名 version 操作系统信息部分来源 /etc/rpm/macros.dist
  • 原文地址:https://blog.csdn.net/m0_59485658/article/details/128164291