• python基础-类的反射


    1)反射是通过字符串方式映射内存中的对象。

      python中的反射功能是由以下四个内置函数提供:hasattr、getattr、setattr、delattr,

      改四个函数分别用于对对象内部执行:检查是否含有某成员、获取成员、设置成员、删除成员。

     注意:类的反射不能使用类的私有方法

    # -*- coding:utf-8 -*-
    __author__ = 'shisanjun'
    
    class Foo(object):
        def __init__(self):
            self.name="s"
    
        def func(self):
            return 'func'
    
    obj=Foo()
    #检查是否含有成员
    print("----是否有成员-----")
    print(hasattr(obj,"name"))
    print(hasattr(obj,"func"))
    
    #获取成员
    print("----获取成员-----")
    print(getattr(obj,"name"))
    print(getattr(obj,"func")()) #getattr(obj,"func")实例的func的内存地址
    
    #设置成员
    print("----设置成员-----")
    def show(num):
        return num+1
    setattr(obj,"age",18)
    setattr(obj,"show",3)
    print(getattr(obj,"age"))
    print(getattr(obj,"show"))
    
    delattr(obj,"age")
    delattr(obj,'show')
    print("----是否有成员-----")
    print(hasattr(obj,"age"))
    print(hasattr(obj,"show"))
    
    """
    ----是否有成员-----
    True
    True
    ----获取成员-----
    s
    func
    ----设置成员-----
    18
    3
    ----是否有成员-----
    False
    False
    """

    2)其他方法访问类的成员

    class Foo(object):
    
        def __init__(self):
            self.name = 'alex'
    
        def func(self):
            return 'func'
    
    # 不允许使用 obj.name
    obj = Foo()
    
    print obj.__dict__['name']
  • 相关阅读:
    分布式配置中心之Apollo X
    hexo 使用问题
    Keras 识别手写数字 MKY
    LinePlane intersection && Plane Parameterization
    inlineblock 之 “幽灵空白节点”
    float 及 清除浮动
    centos中docker配置tcp端口
    go+gin设置服务的cors
    u盘挂在到服务器
    Gin加载history模式下打包后的Vue文件,刷新找不到页面404
  • 原文地址:https://www.cnblogs.com/lixiang1013/p/6941915.html
Copyright © 2020-2023  润新知