码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-06-04 22:55:11      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:pre   内存   false   delattr   div   nbsp   obj   getattr   对象   

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-类的反射

标签:pre   内存   false   delattr   div   nbsp   obj   getattr   对象   

原文地址:http://www.cnblogs.com/lixiang1013/p/6941915.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!