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值 ...
随机推荐
- 【c++基础】accumulate
accumulate // accumulate example #include <iostream> // std::cout #include <functional> ...
- Unity插件-ShareSDK使用指南
Unity插件ShareSDK使用教程 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Summariz ...
- 2243: [SDOI2011]染色(LCT)
2243: [SDOI2011]染色 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 10909 Solved: 4216[Submit][Statu ...
- Linux配置python和pip环境
CentOS: 1.首先安装EPEL扩展源: yum install -y epel-release 2.系统自带python2,所以只需安装python3 yum install -y python ...
- POJ 2407:Relatives(欧拉函数模板)
Relatives AC代码 Relatives Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16186 Accept ...
- torodb docker 运行试用
torodb 可以方便的让你迁移到pg,同时使用标准原生的sql 查询 使用官方的docker-compose 进行测试 环境准备 docker-compose 文件 wget https://raw ...
- apache flink kubernetes 运行试用
类似docker-compose 运行模式,使用的是deploy 的模式 deploy yaml 文件 deploy-k8s-yaml apiVersion: extensions/v1beta1 k ...
- Oracle 跨库 查询 复制表数据
在目前绝大部分数据库有分布式查询的需要.下面简单的介绍如何在oracle中配置实现跨库访问. 比如现在有2个数据库服务器,安装了2个数据库.数据库server A和B.现在来实现在A库中访问B的数据库 ...
- MSG命令使用详解
最近在编写FTP上传数据的批处理时,需要用到局域网内传输数据来提示错误,突然想起忘了N久没用的命令(net send), 结果在win7 下cmd运行net send /? 运行失败.经过百度大神的 ...
- Hadoop专业解决方案之构建Hadoop企业级应用
一.大数据的挑战 大数据面对挑战是你必须重新思考构建数据分析应用的方式.传统方式的应用构建是基于数据存储在不支持大数据处理的基础之上.这主要是因为一下原因: 1.传统应用的基础设施是基于传统数据库访问 ...