首页 > 代码库 > python基础学习日志day7-类的反射

python基础学习日志day7-类的反射

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]

 

python基础学习日志day7-类的反射