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'
    示例代码输出
  • 相关阅读:
    PHP与MySQL动态网站开发
    巧学巧用 Dreamweaver CS6制作网页
    PHP+MySQL网站开发全程实例
    电商店铺装修攻略
    代码 里面 跟 xib 里面要一致,不然 程序不知道 往东 往西了,
    这样2b的代码,
    controller的frame
    string的length不可能等于 0的,好吧,
    计算字体的高度时候,计算的字体要跟 xib 里面字体的大小 要一致的,不然计算的高度是没有意义的,
    关于 frame
  • 原文地址:https://www.cnblogs.com/zhangmingda/p/9163729.html
Copyright © 2011-2022 走看看