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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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-类的反射的主要内容,如果未能解决你的问题,请参考以下文章

python基础学习日志day7-类的其他方法

python学习之路-day7

人生苦短,我用python-- Day7

Python学习-day7

python之路,day7-面向对象变成

Python之路,Day7 - 面向对象编程进阶