python学习,day7 反射

反射
hasattr(obj,name_str) , 判断一个对象obj里是否有对应的name_str字符串的方法
getattr(obj,name_str), 根据字符串去获取obj对象里的对应的方法的内存地址
setattr(obj,'y',z), is equivalent to ``x.y = v''
delattr 删除属性或者方法
# coding=utf-8
# Author: RyAn Bi

def bulk(self):
    print('%s is calling'%self.name)

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


    def eat(self,some):
        print('%s is eating %s'%(self.name,some))


d= Dog('abc')
choice = input('>>:').strip()
#print(hasattr(d,choice))   #判断dog里是否有choice赋值的属性
#print(getattr(d,choice))   #获取dog里的choice的属性
if hasattr(d,choice):
    func = getattr(d,choice)
    func('dce')
else:
    #setattr(d,choice,bulk)    #输入talk,新建了一个方法
    #d.talk(d)

    setattr(d,choice,22)   #新建了一个属性 getattr(d,choice) = 22
    print(getattr(d,choice))

  

posted @ 2020-07-02 16:42  bbgoal  阅读(110)  评论(0编辑  收藏  举报