zoukankan      html  css  js  c++  java
  • 反射

    #通过字符串映射或修改程序运行时的状态、属性、方法

    def bulk(self):
    print("%s is yelling...." %self.name)

    class Dog(object):
    def __init__(self,name):
    self.name = name

    def eat(self,food):
    print("%s is eating..."%self.name,food)


    d = Dog("NiuHanYang")
    choice = input(">>:").strip() #输入name

    if hasattr(d,choice): #判断一个对象d里是否有对应的choice字符串的方法或者属性
    #getattr(d,choice)('包子') #执行相应的方法
    getattr(d, choice)

    else:
    setattr(d,choice,bulk) #setattr在实例中增加一个方法或者属性,d.choice = bulk,choice是用户输入的字符串;setattr(x, 'foobar', 123) is equivalent to x.foobar = 123
    func = getattr(d, choice)
    func(d)


    print(d.name)
    delattr(d,choice ) #删除实例的一个方法或者属性
    #print(d.name) #再打印name出错



    hasattr(obj,name_str) ,    判断一个对象obj里是否有对应的name_str字符串的方法
    getattr(obj,name_str),   获取obj对象里name_str的对应的方法的内存地址
    setattr(obj,'y',z),       在实例中增加一个方法或者属性   is equivalent to ``x.y = v''   
    delattr(d,choice )     删除实例d中的choice,其中choice可以是方法也可以是属性;

  • 相关阅读:
    Hadoop组件
    Vmworkstation启用错误
    sqoop
    ZooKeeper02
    动物管理员--zooKeeper-01
    IP-v4&IP-v6
    hive 基础
    ssh连接失败,排错经验
    Hadoop管理员的十个最佳实践
    OSGi在淘宝内部的使用
  • 原文地址:https://www.cnblogs.com/lighthouse/p/9682144.html
Copyright © 2011-2022 走看看