• 反射机制


    # -*- coding: utf-8 -*-
    
    '''
    调用Dog 中choice所存储字符串的方法
    
     hasattr(obj,str) 的作用是判断d这个实例中是否含有choice中所储存字符串的方法
     getattr(obj,str) 调用方法(getattr(d, choice) 的作用是获取到方法的内存地址,加上括号调用方法)
     setattr(obj,str,method) 为instance 添加新的方法/属性
     delattr(obj, str) 删除属性
    '''
    
    def bulk(self):
        print("%s is bulk" %self.name)
    
    class Dog(object):
        def __init__(self,name):
            self.name = name
        
        def eat(self):
            print("%s is eating"  %self.name)
        
    #     def
    
    d = Dog("wangcai")
    choice ="eat" #input(">>:").strip()
    m2 = 'talk'
    p = "name"
    
    
    # hasattr 的作用是判断d这个实例中是否含有choice中所储存字符串的方法
    print(hasattr(d, choice))
    
    #调用方法(getattr(d, choice) 的作用是获取到方法的内存地址,加上括号调用方法)
    getattr(d, choice)()
     
    #为instance 添加新的方法
    setattr(d, m2, bulk)
    d.talk(d)
    
    #删除属性
    print(d.name)
    delattr(d, p)
    print(d.name)

    动态导入:

    # -*- coding: utf-8 -*-
    '''
    已知一个模块,比如 lib.aa (aa中有Test 方法), 但是以字符串的形式给出 , 我们可以通过动态导入的方式将这个模块进行导入
    '''
    
    
    #导入 lib.aa
    mod = __import__("lib.aa")
    
    #调用Test
    mod.aa.Test()
    
    
    #建议使用下边的这种方式
    import importlib
    lib = importlib.import_module('lib.aa')
    lib.Test()
  • 相关阅读:
    mysql 删除与安装
    mysql 中文乱码 或 问号
    系统锁屏
    技术相关
    织梦 php 网站建设
    linux mysql 安装与使用
    技术收集
    批处理 关闭 进程
    二十三种设计模式
    三星(samsung)手机i699内容:解锁boot loader,刷recovery,刷机(刷rom),root综合教程
  • 原文地址:https://www.cnblogs.com/gaizhongfeng/p/7921125.html
Copyright © 2020-2023  润新知