面向对象5-反射
2018-06-17 23:39:18来源:未知 阅读 ()
hasattr(x, y) getattr(x, y) setattr(x, y , v) delattr(x, y)四种反射方法,就是把字符串反射为内存地址。
1 class people(object): 2 def __init__(self, name, age): 3 self.name = name 4 self.age = age 5 6 def talk(self): 7 print('%s is talking ...'%self.name) 8 p1 = people('zsq', 28) 9 choice = input('please inpute choice') 10 11 #hasattr当前对象中有对应该字符串名的方法或属性返回True否则返回False.# choice输入name/age/talk都会返回True否则返回False 12 if choice in ('name', 'age', 'talk'): 13 print(hasattr(p1, choice)) 14 else: 15 print('this choice not in hasattr') 16 17 #getattr方法返回该对象对应字符串参数方法的内存地址,加()就可以执行。# 如果字符串是对象的属性则直接返回属性值。 18 if choice in ( 'talk', ): 19 getattr(p1, choice)() 20 elif choice in ('name', 'age'): 21 a = getattr(p1, choice) 22 print(a) 23 24 #setattr(x, 'y', v) setattr命令以后调用对象的choice方法时,直接调用test_setattr函数;不论对象是否原来有该方法 25 #setattr命令以后调用对象的choice属性时时,直接返回v的内存地址(对象)或者值(常量) 26 def test_setattr(): 27 print('this is test setattr') 28 29 if choice == 'talk1': 30 setattr(p1, choice, test_setattr) 31 p1.talk() 32 elif choice == 'name1': 33 setattr(p1, choice, 'name_test') 34 print(getattr(p1, choice)) 35 #delattr 删除对象对应的属性或者方法 36 if choice == 'age': 37 delattr(p1, choice) 38 print(p1.age)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Python之对象持久化笔记 2019-08-13
- python之函数、面向对象 2019-08-13
- Python的面向对象2 2019-07-24
- Python之路【第九篇】:Python面向对象 2019-07-24
- python 之 并发编程(开启子进程的两种方式,进程对象的属性 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash