zoukankan      html  css  js  c++  java
  • 获取类的对象信息

    看到评论中有同学在问,这一章所讲的内容一般在什么时候会用到呢,我就翻了下,然后记录下来,给后面的同学做个参考。

    # 首先你有一个command.py文件,内容如下,这里我们假若它后面还有100个方法

    class MyObject(object):
        def __init__(self):
            self.x = 9
        def add(self):
            return self.x + self.x
    
        def pow(self):
            return self.x * self.x
    
        def sub(self):
            return self.x - self.x
    
        def div(self):
            return self.x / self.x
    

    # 然后我们有一个入口文件 exec.py,要根据用户的输入来执行后端的操作

    from command import MyObject
    computer=MyObject()
    
    def run():
        inp = input('method>')
    
        if inp == 'add':
            computer.add()
        elif inp == 'sub':
            computer.sub()
        elif inp == 'div':
            computer.div()
        elif inp == 'pow':
            computer.pow()
        else:
            print('404')
    

    上面使用了if来进行判断,那么假若我的command里面真的有100个方法,那我总不可能写100次判断吧,所以这里我们就会用到python的反射特性,看下面的代码 

    from command import MyObject
    
    computer=MyObject()
    def run(x):
        inp = input('method>')
        # 判断是否有这个属性
        if hasattr(computer,inp):
        # 有就获取然后赋值给新的变量
            func = getattr(computer,inp)
            print(func())
        else:
        # 没有我们来set一个
            setattr(computer,inp,lambda x:x+1)
            func = getattr(computer,inp)
            print(func(x))
    
    if __name__ == '__main__':
        run(10)
    

    其实本章的内容,很多涉及到动态加载模块类

     

  • 相关阅读:
    考在职还是全日制?
    ARP欺骗病毒攻击
    AutoCAD2006安装错误之解决
    WINCE下创建多个文件分区
    在WINCE5.0中应用CMD(比如运行PING命令)
    WinCE 应用程序开机自动方法
    Wince 添加中文字库
    WinCE内核裁减(中文字体)及字库和内核的分离(转)
    WINCE基于CH7024实现TV OUT (VGA)功能
    WINCE6.0 中文支持
  • 原文地址:https://www.cnblogs.com/zuxing/p/8973806.html
Copyright © 2011-2022 走看看