zoukankan      html  css  js  c++  java
  • 反射(hasattr , getattr, setattr) 输入的字符串用来运行程序

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

    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)
    

      

  • 相关阅读:
    JDBC学习笔记
    hdfs文件格式
    全国疫情防控监控平台开发
    MySQL学习笔记
    拖拽表单生成
    Cython加密(含Windows和Linux)
    pcl 文字点云
    新装Ubuntu系统--常用软件安装配置
    GIT
    Data Analysis With Python
  • 原文地址:https://www.cnblogs.com/my-love-is-python/p/9102706.html
Copyright © 2011-2022 走看看