码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象其他相关

时间:2018-09-02 21:42:50      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:python   def   nbsp   span   attr   class   turn   lam   属性   

反射
python中的反射功能是由以下四个内置函数提供:hasattr、getattr、setattr、delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员、获取成员、设置成员、删除成员。

hasattr,getattr,setattr,delattr.
检查成员,获取成员,设置成员,删除成员.
class Foo():
    def __init__(self):
        self.name = ‘wupeiqi‘

    def func(self):
        return ‘func‘
obj = Foo()
检查是否含有成员
print(hasattr(obj,‘name‘))  #结果Ture
print(hasattr(obj,‘func‘))  #结果Ture
print(hasattr(obj,‘nice‘))  #结果False

获取成员
print(getattr(obj,‘name‘))  #结果wupeiqi
print(getattr(obj,‘func‘)())    #结果func

设置成员
setattr(obj,‘age‘,18)
print(getattr(obj,‘age‘))   #结果18

setattr(obj,‘nice‘,lambda x:x**2)
print(getattr(obj,‘nice‘)(2))   #结果4

删除成员
delattr(obj,‘name‘)
print(getattr(obj,‘name‘))  #报错,原因‘Foo‘对象没有属性‘name‘(‘Foo‘ object has no attribute ‘name‘)
delattr(obj,‘func‘)
print(getattr(obj,‘func‘))  #报错

 

面向对象其他相关

标签:python   def   nbsp   span   attr   class   turn   lam   属性   

原文地址:https://www.cnblogs.com/chenhuping/p/9575165.html

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