Python---反射ttr

反射:通过字符串映射或修改程序运行时的状态,属性,方法。

4个函数:getattr(),hasattr(),setattr(),delattr()

用法如下:

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("Sun")
choice=input(">>:").strip()  #choice为字符串形式
#print(hasattr(d,choice))    #hasattr(obj,name_str)判断一个对象obj里是否有name_str方法
if hasattr(d,choice):
    delattr(d,choice)    #delattr(obj,name_str)  删除obj对象中的name_str属性
    func = getattr(d,choice)  #getattr(obj,name_str)获取对象objname_str方法的内存地址(如果有)
    #print(func)
    setattr(d,choice,"Xiao")   #改名
    #func("HEHE")   #func就相当于eat
else:
    # setattr(d,choice,bulk)   #setattr(obj,name_str1,name_str2)把位于obj对象外的name_str2方法加进obj对象中(动态装一个方法)  obj.name_str1=name_str2
    # d.talk(d)   #talkname_str1
    # print(d.name)
    # setattr(d,choice,None)   #动态装一个静态属性 d.choice=None
    # print(getattr(d,choice))
    setattr(d,choice,150000)
    print(getattr(d,choice))  #getattr(d,choice)如果是一个方法,则返回内存地址;如果是一个不存在的静态属性,则直接返回值)
print(d.name)   #改名测试
d.eat("Monkey")

阅读更多
个人分类: python基础
上一篇Pycharm永久激活
下一篇Python----异常处理.
想对作者说点什么? 我来说一句

利用HFSS对反射阵单元进行仿真

2015年03月17日 87KB 下载

反射内存卡样例

2018年02月08日 17.11MB 下载

Groovy反射机制实例

2010年11月29日 968KB 下载

JAVA新特性--java反射、映射

2009年09月05日 731KB 下载

反射思维导图

2017年12月12日 1.51MB 下载

MATLAB 中的反射变换

2017年12月13日 6KB 下载

Java反射与动态代理

2016年10月04日 32KB 下载

反射机制反射Dao 反射机制

2011年06月17日 26KB 下载

没有更多推荐了,返回首页

关闭
关闭