• 反射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'
    示例代码输出
  • 相关阅读:
    ORM是什么?
    mysql 杂谈
    IO model之IO多路复用的触发方式
    IO model之select poll epoll IO多路复用介绍
    IO model
    事件驱动模型介绍
    函数
    商品程序
    随机生成密码
    import radom 和import string
  • 原文地址:https://www.cnblogs.com/zhangmingda/p/9163729.html
Copyright © 2020-2023  润新知