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'
    示例代码输出
  • 相关阅读:
    P2048 [NOI2010]超级钢琴
    [LOJ#6468.] 魔法
    [牛客小白月赛18] Forsaken的数列
    [JSOI2011]柠檬
    [TJOI2015]组合数学
    【单调队列优化】[CF372C] Watching Fireworks is Fun
    【线段树】[Luogu P4198]楼房修建
    Python资源
    人生的几个阶段
    两种解读,生活的意义和方法
  • 原文地址:https://www.cnblogs.com/zhangmingda/p/9163729.html
Copyright © 2011-2022 走看看