zoukankan      html  css  js  c++  java
  • 类的反射

    类反射:
       通过字符串映射或修改程序运行时的状态,属性,方法
     
       有以下4个方法:
         1. hasattr(obj, str)
            判断obj对象是否存在str方法
     
         2. getattr(obj, str)
            获取obj对象的内存地址
     
         3.  setattr(obj, str_name, func_name)
            将方法func_name装配成obj的str_name方法
     
         4. delattr(obj, str)
            将对象obj中的str删除掉。
     
     例1: 
     class Dog(object):
      def __init__(self, name):
        self.name = name
     
      def eat(self, food):
          print("%s is eating %s...." % (self.name, food))
     
     d = Dog("Kitty")
     sel = input(">>:").strip()
     
     if hasattr(d, sel):
      func = getattr(d, sel)
      func("fruit")  
      
     例2:   
     class Dog(object):
      def __init__(self, name):
        self.name = name
     
      def eat(self, food):
        print("%s is eating %s...." % (self.name, food))
     
     d = Dog("Kitty")
     sel = input(">>:").strip()
     
     def bulk(self):
      print("%s is talking...."% self.name)
     
     if hasattr(d, sel):
      func = getattr(d, sel)
      func("fruit")
     else:
      setattr(d, sel, bulk)
      func = getattr(d, sel)
      func(d)
     
     输出:
     >>:gg
     Kitty is talking.... 
  • 相关阅读:
    1.1获取go运行版本信息
    11.exporting 导出
    MyBatis的dao的mapper写法
    用Intellij IDEA建mybatis案例
    面向对象之多态
    this和构造器的内存分析(***)
    服务器解析请求的基本原理
    接口和抽象类的使用上的区别和选择
    intelliJ IDEA之使用svn或git管理代码
    IntelliJ IDEA的使用之调试方法
  • 原文地址:https://www.cnblogs.com/brace2011/p/9291529.html
Copyright © 2011-2022 走看看