zoukankan      html  css  js  c++  java
  • 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']
  • 相关阅读:
    最近学习的情况
    0Day – 2011.1.12[From B4A]考试终于完了
    PHP 在NetBeans中的测试[转自NetBeans.org]
    12月武汉下雪了
    Delphi下指针使用总结
    0Day – 2010.12.27[转自B4A]
    AQTime教程
    C #define理解
    C 环境的搭配
    数据结构 字符串的模式匹配
  • 原文地址:https://www.cnblogs.com/lixiang1013/p/6941915.html
Copyright © 2011-2022 走看看