zoukankan      html  css  js  c++  java
  • 反射

    参考:http://www.cnblogs.com/alex3714/articles/5213184.html

    hasattr(obj,name_str):判断一个对象obj里是否有对应的name_str字符串的方法
    getattr(obj,name_str):根据字符串取获取obj对象里的对应的方法的内存地址
    setattr(obj,"y",z):相当于x.y = v

    delattr(obj,name_str):删除一个属性

    def bulk(self):
        '''
        类不存在的方法,利用反射的情况,需要写在类外
        :param self: 
        :return: 
        '''
        print("%s 在叫!"%self.name)
    
    class Dog(object):
        '''
        test反射
        '''
        def __init__(self,name):
            self.name =name
    
        def eat(self):
            print("%s 吃着...."%self.name)
    
    d = Dog("alex")
    choice = input("choice>>:").strip()
    a = hasattr(d,choice)#判断输入的字符串是否在实例d里,若存在,则返回True,否则False
    if a:
        print(a)
        b = getattr(d,choice)
        print(b)
        '''
        输入eat,返回的b就是内存对象,可以加()调用对应函数
        输入name,返回的b就是实例属性
        '''
    # 输入的字符串不在类里,则可以利用setattr(x,"y",v),x.y = v 设置对象
    else:
        c = setattr(d,choice,None)#d.choice = None
        d = getattr(d,choice)#获取d.choice的值
        print(c)
        print(d)
    def bulk(self):
        '''
        类不存在的方法,利用反射的情况,需要写在类外
        :param self:
        :return:
        '''
        print("%s 在叫!"%self.name)
    
    class Dog(object):
        '''
        test反射
        '''
        def __init__(self,name):
            self.name =name
    
        def eat(self):
            print("%s 吃着...."%self.name)
    
    d = Dog("alex")
    choice = input("choice>>:").strip()
    a = hasattr(d,choice)#判断输入的字符串是否在实例d里,若存在,则返回True,否则False
    if a:
        print(a)
        b = getattr(d,choice)
        print(b)
        delattr(d,choice)#删除实例对应的属性
        '''
        输入eat,返回的b就是内存对象,可以加()调用对应函数
        输入name,返回的b就是实例属性
        '''
    #     这里显示删除name属性的例子,所以提示错误
    print(d.name)
    删除name属性报错的例子
  • 相关阅读:
    ps | grep排除grep这个进程
    树莓派3B安装LEDE
    从路由器镜像中提取uImage头信息
    提取路由器固件中的squashfs
    javascript监听按键
    linux 英汉词典程序shell+postgresql版
    树莓派(centos7)安装mysql
    在线视频下载利器——youtube-dl
    使用curl自动签到百度贴吧
    极路由hc5661安装tcpdump
  • 原文地址:https://www.cnblogs.com/cheng662540/p/8318858.html
Copyright © 2011-2022 走看看