美文网首页
python反射

python反射

作者: 奔跑的老少年 | 来源:发表于2018-07-23 16:11 被阅读0次

我们可通过反射添加、修改、删除某个对象的属性和方法:
hasattr(object,str):判断该对象是否含有该方法或属性
getattr(object,str):拿到这个对象的方法或属性,若是属性,直接返回属性值,若是方法则返回内存地址
setattr(object,str,value):修改属性值或新增属性值或新增方法

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('QQ')
choice = input('put method>>:').strip()

# print(hasattr(d,choice)) #put method>>:eat   执行结果True
# print(getattr(d,choice)) #put method>>:eat   如果get的是一个对象,就将内存地址返回,如果是一个静态属性,就将属性值返回

if hasattr(d,choice):#判断d 对象是否有choice这个方法或属性
    delattr(d,choice)#删除某个属性或方法
    func = getattr(d,choice)#拿到choice这个方法或属性,若是属性直接返回
    # func('baozi')#若是方法传值调用
    print(func)#打印属性
    setattr(d,choice,'kk')#修改该属性值
else:
    # setattr(d,choice,bulk) #动态添加一个没有的方法,相当于d.choice = bulk
    # func = getattr(d,choice)
    # func(d) #不可直接d.bulk,bulk并不是d中的一个方法

    setattr(d,choice,22)#动态添加一个没有的属性,值为22
    print(getattr(d,choice))
print(d.name)

相关文章

  • python反射

    我们可通过反射添加、修改、删除某个对象的属性和方法:hasattr(object,str):判断该对象是否含有该方...

  • Python 反射

    反射:本质是利用字符串的形式去对对象/模块进行操作其成员,一种基于字符串的时间驱动。以我现在的理解,就是本来需要显...

  • Python 反射

    概述 运行时,区别于编译时,指的是程序被加载到内存中执行的时候。反射,reflection,指的是运行时获取类型定...

  • python反射

    概念 运行时: 区别于编译时,指程序被加载到内存中执行的时候. 反射(自省): 指运行时获取对象的类型信息. 具有...

  • Python 反射

    反射: 通过字符串的形式来导入模块,并以字符串的形式执行函数 应用,大部分应用在web框架中。

  • Python 反射

    首先说说反射是什么?反射是可以以字符串的形式动态调用函数的过程。 当然反射不只是字符串的函数执行,她和exec和e...

  • python 反射

    反射 dir() 拿到对象所有属性https://zhuanlan.zhihu.com/p/99150129[ht...

  • python 反射

    python 反射 -解释类型的语言,在程序被加载到内存运行的时候,可以通过某种方p式获取对象的类型、属性等信息的...

  • 面向对象:反射,内置方法

    反射 python面向对象中的反射:通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可以使...

  • __import__ 反射和面向对象基础 self 封装 继承(

    一、反射 python中的反射功能是由以下四个内置函数提供:hasattr、getattr、setattr、del...

网友评论

      本文标题:python反射

      本文链接:https://www.haomeiwen.com/subject/kgdrmftx.html