码迷,mamicode.com
首页 > 其他好文 > 详细

反射(hasattr , getattr, setattr) 输入的字符串用来运行程序

时间:2018-05-29 00:30:06      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:foo   object   lse   else   def   pytho   不能   tin   nbsp   

当用户输入字符串时,不能够用来运行程序 

 

1.使用 hasattr 找出输入的字符串是否在程序内

2.使用 getattr 返回找出字符串对应的函数的内存地址或者变量

3. 使用setattr 添加新的函数,或者改变已有的程序的实例变量或类变量

import easygui 

def bulk(self):
	print(‘%s is talking‘%self.name)

class Dog(object):
	def __init__(self,name):
		self.name = name 
	
	def eat(self, food):
		print(‘%s is eating %s‘%(self.name, food))
	

find_info = easygui.enterbox(‘please give me you want‘)
d = Dog(‘ronghua‘)

if hasattr(d, find_info): #判断这个变量是否在函数内
	func = getattr(d, find_info)  #找到这个变量 
#	print(getattr(d, find_info)) 
	func(‘包子‘)  #运行
else:
	setattr(d, find_info, bulk)  # 如果bulk 函数不在类内,载入bulk函数,用find_info 命名

func = getattr(d, find_info)
func(d)

  

反射(hasattr , getattr, setattr) 输入的字符串用来运行程序

标签:foo   object   lse   else   def   pytho   不能   tin   nbsp   

原文地址:https://www.cnblogs.com/my-love-is-python/p/9102706.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!