• 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") 

  • 相关阅读:
    # Spring 事务失效场景
    Scala基础【seq、set、map、元组、WordCount、队列、并行】
    关于java业务层是否抛异常
    事件分发机制原理
    进程与线程
    四、神经网络语言模型(NNLM)
    【音视频—基础】分辨率、码率和帧率
    `英语` 2022/8/3
    PostgreSQL 17新特性之登录事件触发器
    【好书推荐】Web 3.0(具有颠覆性与重大机遇的第三代互联网)
  • 原文地址:https://blog.csdn.net/m0_59485658/article/details/128164291