zoukankan      html  css  js  c++  java
  • Python反射

    通过字符串映射或修改程序时的状态、属性、方法,有以下四种方法:

    • getattr()
    • hasattr()
    • setattr()
    • delattr()

    hasattr(object,name)

    判断一个对象里是否存在对应的字符串的方法。

    class dog:
    	def __init__(self,name):
    		self.name = name
    
    	def run(self):
    		print("%s正在跑" % self.name)
    
    d = dog("小黑")
    c = input("Input function: ").strip()
    print(hasattr(d,c)) #判断字符串是否在类的方法里面
    #输出
    True
    

      

    getattr(object, name, default=None)

    根据字符串去获取obj对象里的对应方法里的对应内存地址。

    class dog:
    	def __init__(self,name):
    		self.name = name
    
    	def run(self):
    		print("%s正在跑" % self.name)
    
    d = dog("小黑")
    c = input("Input function: ").strip()
    print(getattr(d,c))
    getattr(d,c)()
    
    #输出
    <bound method dog.run of <__main__.dog object at 0x00000184E992E3C8>>
    小黑正在跑
    

      

    setattr(x, ‘y’, v)

    动态给类装入一个方法。

    def hit(self):
    	print("增加的一个hit方法")
    
    class dog:
    	def __init__(self,name):
    		self.name = name
    
    	def run(self):
    		print("%s正在跑" % self.name)
    
    d = dog("小黑")
    c = input("Input function: ").strip()
    setattr(dog,c,hit)
    print(hasattr(d,c))
    getattr(d,c)()
    
    ##输出
    Input function: hit
    True
    增加的一个hit方法
    

      

    delattr(x, y)

    删除类中的方法/属性。

  • 相关阅读:
    java ssh整合报错:java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I
    Ubuntu16.04安装搜狗输入法后有黑边问题的解决方法
    socket
    vim编辑器的使用
    linux用户和群组
    bash shell
    [LightOJ 1128]Greatest Parent
    [Luogu P4180][BJWC 2010]严格次小生成树
    函数、方法区别
    有关_meta内容(持续更新)
  • 原文地址:https://www.cnblogs.com/endust/p/12326257.html
Copyright © 2011-2022 走看看