zoukankan      html  css  js  c++  java
  • 第55天python学习反射 动态导入模块

    #反射应用场景:就是分开很多人开发不同模块,不知道是否调用的是否有对应方法,使用if判断一下

    # 反射的概念:主要指程序可以访问,检测和修改它本身状态或是行为的一种能力(自省),
    #四个可以实现自省的函数,下列方法适用于类和对象
    # hasattr(object,"name")#判断object中有没有一个name字符串对应的方法和属性
    class BlackMesium:
    feture="heizhongjie"
    def __init__(self,name,addr):
    self.name=name
    self.addr=addr

    def sell_hourse(self):
    print("【%s】正在卖房子,傻逼才买呢"%self.name)

    def rent_hourse(self):
    print("【%s】正在租房子,傻逼才组呢"%self.name)

    p1=BlackMesium("万科翡翠","官渡")

    # print(hasattr(p1,"name"))#使用hasattr来检测p1是否可以调用到name的属性,结果True
    #
    # print(hasattr(p1,"sell_hourse"))#结果True
    #
    # #使用getattr(object,name,default)获得对应属性值
    # print(getattr(p1,"name"))#结果:万科翡翠。getattr实际就是p1.name的
    #
    # print(getattr(p1,"sell_hourse"))#获得地址:加括号运行结果<bound method BlackMesium.sell_hourse of <__main__.BlackMesium object at 0x02410190>>
    #
    # print(getattr(p1,"sell_hourse","没有这个属性"))#默认参数直接输出

    #总结:getattr(p1,"name")就是p1.name

    #setattr(obj, "age", 19) 动态的增加对象或者类中的成员
    setattr(p1,"sb",True)#添加傻逼属性True
    setattr(p1,"name","congming")#修改name属性为congming
    print(p1.__dict__)#{'name': 'congming', 'addr': '官渡', 'sb': True}


    #使用delattr动态的删除类或者方法成员
    delattr(p1,"sb")
    print(p1.__dict__)#{'name': 'congming', 'addr': '官渡'}


    # 动态导入模块
    # 动态导入模块方法1: __import__

    # 1. 函数功能用于动态的导入模块,主要用于反射或者延迟加载模块。
    #
    # 2. __import__(module)相当于import module


    # 首先创建一个模块目录lib,然后在目录内创建一个模块为:aa.py
    #
    # 模块代码为:
    #
    # class c(object):
    # def __str__(self):
    # return 'C language'
    # 在lib目录平级新建一个测试的模块,使用 __import__ 动态以字符串形式导入lib下的aa模块。
    #
    # lib = __import__('lib.aa') # 相当于import lib
    # c = lib.aa.c()
    # print(c)

    # 动态导入模块方法2:import importlib
    #
    # 实例还是上面的lib.aa模块,这里使用importlib进行动态导入(这个方法好理解,也是官方建议使用的)
    #
    # import importlib
    # aa = importlib.import_module('lib.aa')
    # c = aa.c()
    # print(c)
  • 相关阅读:
    c#基于事件模型的UDP通讯框架(适用于网络包编解码)
    菜鸟的mongoDB学习---(五)MongoDB的limit、skip、sort方法
    Session管理之ThreadLocal
    java中a++和++a在较复杂的运算中分析
    Spring2.5学习4.2_Proxy实现动态代理(目标类实现随意接口)
    申请美国签证超具体流程
    Class 与 new的配合使用
    关注PHPthinking官网微信公众号——红包来袭
    oracle-sql优化器
    POJ 2184 Cow Exhibition
  • 原文地址:https://www.cnblogs.com/jianchixuexu/p/11701070.html
Copyright © 2011-2022 走看看