• 类的反射


    类反射:
       通过字符串映射或修改程序运行时的状态,属性,方法
     
       有以下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.... 
  • 相关阅读:
    vim复制
    嵌入式Linux学习(二)
    (Java实现) 洛谷 P1042 乒乓球
    (Java实现) 洛谷 P1042 乒乓球
    (Java实现) 洛谷 P1071 潜伏者
    (Java实现) 洛谷 P1071 潜伏者
    (Java实现) 洛谷 P1025 数的划分
    (Java实现)洛谷 P1093 奖学金
    (Java实现)洛谷 P1093 奖学金
    Java实现 洛谷 P1064 金明的预算方案
  • 原文地址:https://www.cnblogs.com/brace2011/p/9291529.html
Copyright © 2020-2023  润新知