day18-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("abc") choice = input(">>:").strip() if hasattr(d,choice): func = getattr(d,choice) func('蛋糕') # hasattr(obj,name_str), 判断一个对象obj里面是否含有对应的name_str字符串的方法 #getattr(obj,name_str) 根据字符串去获取obj对象里对应的方法的内存地址 # >>:eat # abc is eating...蛋糕

2.

    # hasattr(obj,name_str), 判断一个对象obj里面是否含有对应的name_str字符串的方法

#getattr(obj,name_str) 根据字符串去获取obj对象里对应的方法的内存地址
#setattr(obj,'y',z) 相当于x.y = v
#delattr(d,choice) 删除对象对应字符串的属性

3.
# 反射:通过字符串映射或修改程序运行时的状态,属性。或者方法
def bulk(self):
    print("%s is bulking..." % self.name)

class Dog(object):

    def __init__(self,name):
        self.name = name

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

d = Dog("abc")
choice = input(">>:").strip()
print(hasattr(d,choice))
if hasattr(d,choice):
    delattr(d,choice)
    # func = getattr(d,choice)
    # func('蛋糕')
else:
    # setattr(d,choice,bulk)
    # d.talk(d)
    setattr(d,choice,22)
    print(getattr(d,choice))
print(d,name)
# hasattr(obj,name_str), 判断一个对象obj里面是否含有对应的name_str字符串的方法
#getattr(obj,name_str) 根据字符串去获取obj对象里对应的方法的内存地址
#setattr(obj,'y',z) 相当于x.y = v
#delattr(d,choice) 删除对象对应字符串的属性

 

 
posted @ 2018-10-28 14:57  杨fj  阅读(82)  评论(0)    收藏  举报