类反射:
   通过字符串映射或修改程序运行时的状态,属性,方法
 
   有以下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.... 
posted on 2018-07-10 21:19  仙寓游子  阅读(93)  评论(0编辑  收藏  举报