python动态函数hasattr,getattr,setattr,delattr
hasattr(object,name)
hasattr用来判断对象中是否有name属性或者name方法,如果有,染回true,否则返回false
class attr():
def fun(x):
return x%2==1 if __name__ == '__main__':
attr=attr()
print hasattr(attr,'fun')
setattr(object,name,value)
给对象的属性赋值,如属性不存在,先创建
class attr():
def fun(x):
return x%2==1
if __name__ == '__main__':
attr=attr()
print hasattr(attr,'fun')
setattr(attr,'x',4)
print attr.x
也可以使用该方式,动态创建方法
def add(x,y):
return x+y
class attr():
def fun(x):
return x%2==1
if __name__ == '__main__':
attr=attr()
print hasattr(attr,'fun')
setattr(attr,'add',add) 注意,这里的add函数不能添加(),几不能谢伟add()
print hasattr(attr,'add')返回true
print attr.add(4,5) 返回9
getattr(object,name,default)
获取对象的属性或者方法,如果存在返回,如果不存在,返回默认值,默认值是可选的
如果返回的对象是方法,返回方法的内存地址,如果要运行,可以在后面添加()
def add(x,y):
return x+y
class attr():
def fun(x):
return x%2==1
if __name__ == '__main__':
attr=attr()
print getattr(attr,'fun')返回fun的内存地址
print getattr(attr,'name','hello')返回hello,但不创建name属性
defattr(object,name)
用来删除对象的属性
def add(x,y):
return x+y
class attr():
def fun(x):
return x%2==1
if __name__ == '__main__':
attr=attr()
print hasattr(attr,'fun')
setattr(attr,'x',4)
print hasattr(attr,'x')
#print attr.add(4,5)
print getattr(attr,'fun')
delattr(attr,'x') 删除了x属性
print hasattr(attr, 'x')返回为false
删除在对象中已经定义好的属性,会报错,可以删除动态添加的属性
python动态函数hasattr,getattr,setattr,delattr的更多相关文章
- python 内置函数的补充 isinstance,issubclass, hasattr ,getattr, setattr, delattr,str,del 用法,以及元类
isinstance 是 python中的内置函数 , isinstance()用来判断一个函数是不是一个类型 issubclass 是python 中的内置函数, 用来一个类A是不是另外一个 ...
- isinstance/type/issubclass的用法,反射(hasattr,getattr,setattr,delattr)
6.23 自我总结 面向对象的高阶 1.isinstance/type/issubclass 1.type 显示对象的类,但是不会显示他的父类 2.isinstance 会显示的对象的类,也会去找对象 ...
- Python hasattr,getattr,setattr,delattr
#!/usr/bin/env python # -*- coding:utf-8 -*- # 作者:Presley # 邮箱:1209989516@qq.com # 时间:2018-11-04 # 反 ...
- python反射hasattr getattr setattr delattr
反射 : 是用字符串类型的名字 去操作 变量 相比于用eval('print(name)') 留有 安全隐患 反射 就没有安全问题 hasattr 语法: hasattr(object, name)o ...
- Python标准库:内置函数hasattr() getattr() setattr() 函数使用方法详解
hasattr(object, name) 本函数是用来判断对象object的属性(name表示)是否存在.如果属性(name表示)存在,则返回True,否则返回False.参数object是一个对象 ...
- hasattr getattr setattr delattr --> (反射)
class Room: def __init__(self,name): self.name = name def big_room(self): print('bigroot') R = Room( ...
- 反射hasattr; getattr; setattr; delattr
hasattr(obj,name_str):#判断一个对象obj里面是否有对应的name_str字符串的方法,返回True或者Falsegetattr(obj,name_str):#根据字符串去获取对 ...
- Python的getattr(),setattr(),delattr(),hasattr()及类内建__getattr__应用
@Python的getattr(),setattr(),delattr(),hasattr() 先转一篇博文,参考.最后再给出一个例子 getattr()函数是Python自省的核心函数,具体使用大体 ...
- 【转】Python的hasattr() getattr() setattr() 函数使用方法详解
Python的hasattr() getattr() setattr() 函数使用方法详解 hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回BOOL值 ...
随机推荐
- nginx keepalive 高可用
https://blog.csdn.net/u012410733/article/details/57078407 在网络中机器不可避免的出现单点故障,当我们使用nginx进行反向代理的时候如果出现了 ...
- BZOJ4475: [Jsoi2015]子集选取【找规律】【数学】
Description Input 输入包含一行两个整数N和K,1<=N,K<=10^9 Output 一行一个整数,表示不同方案数目模1,000,000,007的值. Sample In ...
- vue 钩子
生命周期总结 这么多钩子函数,我们怎么用呢,我想大家可能有这样的疑问吧,我也有,哈哈哈. beforecreate : 举个栗子:可以在这加个loading事件 created :在这结束loadin ...
- hdu2067 小兔的棋盘 DP/数学/卡特兰数
棋盘的一角走到另一角并且不越过对角线,卡特兰数,数据量小,可以当做dp求路径数 #include<stdio.h> ][]; int main() { ; ) { int i,j; lon ...
- jQuery--- .hasOwnProperty 用法
☆ obj.hasOwnProperty('prop'): 是用来判断一个对象是否有你给出名称的属性或对象.不过需要注意的是, 此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个 ...
- day02 大型互联网架构演变历程笔记 和nigix和keepalived
PS:1.单个进程内,有多个线程,可以共享进程的内存空间2. 进程和进程之间通信比较麻烦, 会涉及 序列化和反序列化 PS :以一个交易网站看网站是如何变大的,网站的发展!!!! PS:随着请求的增加 ...
- java新的语法糖:Java 8 Lambda表达式
***************************************************************************
- StreamSets 多线程 Pipelines
以下为官方文档: Multithreaded Pipeline Overview A multithreaded pipeline is a pipeline with an origin that ...
- 在Win7下新建库并修改图标
win7中在库中添加桌面方法详解 1.在空白处,鼠标右键选择新建——库. 2.命名为桌面,然后选择桌面. 3.鼠标右键选择属性. 4.点击包括文件夹. 5.选择桌面,点击包括文件夹按钮. 6.点击确定 ...
- vue-cli 中的静态资源处理
你会注意到在项目结构上我们有静态资源两个目录:src/assets 和 static/.它们之间有什么区别? 1. 通过webpack处理的资源 要回答这个问题,我们首先需要了解webpack如何处理 ...