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属性报错的例子
  • 相关阅读:
    SRM 594 DIV 2
    python 算法
    virtualenv和virtualenvwrapper介绍、安装和使用
    Django自带的ORM如何执行group by(聚合查询)语句(求和、累积、平均)
    Django REST FrameWork中文教程4:验证和权限
    Django REST FrameWork中文教程3:基于类的视图
    Django REST FrameWork中文教程2:请求和响应
    Django REST framework 中文教程1:序列化
    MySQL基础-存储过程和函数
    MySQL基础-变量
  • 原文地址:https://www.cnblogs.com/cheng662540/p/8318858.html
Copyright © 2011-2022 走看看