def talk(self):
    print("%s is talking"%self.name)

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

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

d = Dog("cql")
choice = input("input>>")

if hasattr(d,choice):               #hasattr:判断类Dog里是否有对应的字符串的方法或者属性
    func = getattr(d,choice)        #getattr:根据字符串去获取Dog类里的对应的方法的内存; getattr(x, 'y') is equivalent to x.y
    func()
else:                              #如果类中没有该方法或者属性
    # setattr(d,choice,talk)        #给Dog类新增一个方法,d.choice-->talk(self),choice是根据用户输入动态变化;setattr(x, 'y', v) is equivalent to ``x.y = v''
    # func = getattr(d,choice)
    # func(d)

    setattr(d,choice,None)         #给Dog类新增一个属性,d.choice-->None,choice是根据用户输入动态变化
    v = getattr(d,choice)
    print(v)