zoukankan      html  css  js  c++  java
  • 反射hasattr; getattr; setattr; delattr

    hasattr(obj,name_str):#判断一个对象obj里面是否有对应的name_str字符串的方法,返回True或者False

    getattr(obj,name_str):#根据字符串去获取对象里的对应方法的内存地址。
    class Dog(object):
        def __init__(self,name):
            self.name = name
        def eat(self,food):
            print('%s eating...:%s' %(self.name,food))
        def talk(self):
            print('%s talk 汪汪汪~!'% self.name)
    d = Dog('NiuhanYang')
    chose = input('想让狗干什么:
    		>>:')
    # print(hasattr(d,chose))
    if hasattr(d,chose):#判断一个对象obj里面是否有对应的name_str字符串的方法,返回True或者False
        # getattr(d,chose)('粑粑')
        func = getattr(d,chose)  #根据字符串去获取对象里的对应方法的内存地址。
        # func('粑粑')
        func()
    hasattr和getattr代码实例

    setattr(obj,'y',v) #根据字符串y,去设置一个obj的一个y属性或y方法;v就是y的值(内存地址)

    class Dog(object):
        def __init__(self,name):
            self.name = name
        def eat(self,food):
            print('%s eating...:%s' %(self.name,food))
    
    d = Dog('NiuhanYang')
    chose = input('想让狗干什么:
    		>>:')
    # print(hasattr(d,chose))
    if hasattr(d,chose):#判断一个对象obj里面是否有对应的name_str字符串的方法,返回True或者False
        # getattr(d,chose)('粑粑')
        func = getattr(d,chose)  #根据字符串去获取对象里的对应方法的内存地址。
        func('粑粑')
        # func()
    else:
        setattr(d,chose,22) #假定 chose输入的为age,d对象中的类中没有这个方法或者属性,就给他赋值22
        print(d.age)
    setattr
    想让狗干什么:
            >>:age
    22
    输出

     delattr(obj,'str') #根据字符串‘str’去删除obj中的这个方法或者属性

    class Dog(object):
        def __init__(self,name):
            self.name = name
        def eat(self,food):
            print('%s eating...:%s' %(self.name,food))
    
    d = Dog('NiuhanYang')
    chose = input('想让狗干什么:
    		>>:')
    # print(hasattr(d,chose))
    if hasattr(d,chose):#判断一个对象obj里面是否有对应的name_str字符串的方法,返回True或者False
        # getattr(d,chose)('粑粑')
        func = getattr(d,chose)  #根据字符串去获取对象里的对应方法的内存地址。
        func('粑粑')
        # func()
    else:
        setattr(d,chose,22) #假定 chose输入的为age,d对象中的类中没有这个方法或者属性,就给他赋值22
        print(d.age)
    delattr(d,chose)
    print(d.age)
    示例代码
    想让狗干什么:
            >>:age
    22
    Traceback (most recent call last):
      File "C:/Users/Administrator/Desktop/Python3_study/day6/反射.py", line 23, in <module>
        print(d.age)
    AttributeError: 'Dog' object has no attribute 'age'
    示例代码输出
  • 相关阅读:
    Linux下的压缩zip,解压缩unzip命令具体解释及实例
    编程验证哥德巴赫猜想
    HDU 4735 Little Wish~ lyrical step~(DLX , 反复覆盖)
    The 2013 South America/Brazil Regional Contest 题解
    【 D3.js 高级系列 — 2.0 】 捆图
    怎么让百度收录站点的图片呢?
    ios-UI1
    oc85--利用宏定义简化单例
    oc84--单利
    oc83--自定义类实现copy方法
  • 原文地址:https://www.cnblogs.com/zhangmingda/p/9163729.html
Copyright © 2011-2022 走看看