zoukankan      html  css  js  c++  java
  • Python随心记--反射、动态导入模块

    hasatttr(object,name)   #检测对象中是否存在name属性
    getattr(object,name,delault = Null)
    setattr(object,x,True)
    delattr(object,x) #删除属性
    class BlackMedium:
        feture = 'Ugly'
        def __init__(self,name,addr):
            self.name = name
            self.addr = addr
        def sell_hourse(self):
            print('[%s] 正在卖房' %self.name)
    
    blackmedium = BlackMedium('青年公寓','南山')
    print(hasattr(blackmedium,'name'))   #存在返回True
    print(getattr(blackmedium,'name','meiyouzhi'))   #存在返回值
    setattr(blackmedium,'white',True)   #设置属性
    setattr(blackmedium,'func',lambda x:x+1)   #加函数
    print(blackmedium.func(12))
    #反射使用场景
    1 实现可插拔机制
    2 动态导入模块
    class Ftpclient:
        def __init__(self,addr):
            self.addr = addr
            print('正在连接IP:%s服务器' %self.addr)
        def put(self):
            print('正在上传文件')
    from  module import  Ftpclient  #模拟Ftpclient在module模块下
    
    ftpclien = Ftpclient('192.168.0.1')
    if hasattr(ftpclien,'put'):
        func_get = getattr(ftpclien,'put')
        func_get()
    else:
        print('方法不存在')
    动态导入模块
    module_t = __import__('m.t')   #传出字符串,类似于文明的名称
    module_t.t.test()   #调用t下的test方法
    
    import imaplib
    imaplib.import_module('m.t')   #以字符串模式导入
  • 相关阅读:
    【Docker】命令 start
    【Docker】命令 create
    【Docker】命令 docker
    【Docker】命令 pull
    【Docker】命令 search
    【Docker】命令 info
    【Docker】命令 version
    Java常用类——Random类
    Java常用类——BigInteger& BigDecimal
    Java常用类——Math类
  • 原文地址:https://www.cnblogs.com/Essaycode/p/10203659.html
Copyright © 2011-2022 走看看