Python的hasattr(),getattr(),setattr()
今天读到源码时遇到了setattr()和getattr()两方法,给忘了,重新回顾一下吧!
1. hasattr(object, name)
判断object里是否有name属性,有就返回True,没有则返回False.
class MyClass(object):
name = 'jack'
age = '' obj = MyClass()
print(hasattr(obj, 'name')) # True
print(hasattr(MyClass, 'age')) # True
print(hasattr(obj, 'gender')) # False
2. getattr(object, name, [default])
用来获取object的属性或方法,有就打印出来. 没有就打印默认值,若是没有设置默认值则报错
class MyClass(object):
name = 'jack'
age = '' def func(self):
return 'hello world!!!' obj = MyClass() print(getattr(MyClass, 'name')) # jack
print(getattr(obj, 'age')) #
print(getattr(MyClass, 'func')) # <function MyClass.func at 0x000001ACDE9A9AE8>
print(getattr(obj, 'func')) # <bound method MyClass.func of <__main__.MyClass object at 0x000001D1505D01D0>>
# print(getattr(MyClass, 'func1')) # 没有设置默认值,找不到方法会报错: AttributeError: type object 'MyClass' has no attribute 'func1'
print(getattr(MyClass, 'func1', None)) # 设置了默认值None,找不到就会返回默认值: None
print(getattr(MyClass, 'func')('self')) # hello world!!!
print(getattr(obj, 'func')()) # hello world!!!
3. setattr(object, key, value)
用来对object的属性key赋值value. 若是key存在,则更新value的值. 若key不存在,则先创建属性key再对其赋值value.
class MyClass(object):
name = 'jack'
age = '' obj = MyClass() setattr(MyClass, 'name', 'tom')
print(getattr(MyClass, 'name')) # tom setattr(obj, 'age', 28)
print(getattr(obj, 'age')) # setattr(MyClass, 'gender', 'male')
print(getattr(MyClass, 'gender')) # male
print(getattr(obj, 'gender')) # male setattr(obj, 'hobby', 'skating')
print(obj, 'hobby') # <__main__.MyClass object at 0x00000209F5070630> hobby
print(MyClass, 'hobby') # <class '__main__.MyClass'> hobby
三个方法一起用
class MyClass(object):
name = 'jack'
age = '' # 判断Myclass是否有gender属性,有则打印,没有则添加
def if_attr(gender='male'):
if hasattr(MyClass, 'gender'):
return getattr(MyClass, 'gender')
return setattr(MyClass, 'gender', gender) if_attr(gender='female')
print(getattr(MyClass, 'gender')) # female
Python的hasattr(),getattr(),setattr()的更多相关文章
- 【转】Python的hasattr() getattr() setattr() 函数使用方法详解
Python的hasattr() getattr() setattr() 函数使用方法详解 hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回BOOL值 ...
- python eval() hasattr() getattr() setattr() 函数使用方法详解
eval() 函数 --- 将字符串str当成有效的表达式来求值并返回计算结果. 语法:eval(source[, globals[, locals]]) ---> value 参数: sour ...
- Python的hasattr() getattr() setattr() 函数使用方法详解
hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False.需要注意的是name要用括号括起来 1 ...
- Python的hasattr() getattr() setattr() 函数使用方法详解 (转)
来自:https://www.cnblogs.com/cenyu/p/5713686.html hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回BOO ...
- 【Python】hasattr() getattr() setattr() 使用方法详解
本文转自 https://www.cnblogs.com/cenyu/p/5713686.html hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回B ...
- python中hasattr, getattr,setattr及delattr四个方法
通过一个实例来说明,这四个函数的用法: 首先一个如下的一个简单的类: class Animal(object): def __init__(self,name, zone): self.name = ...
- Python的hasattr() getattr() setattr() 函数使用方法
hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False.需要注意的是name要用括号括起来 &g ...
- Python的hasattr() getattr() setattr() 函数使用方法详解--转载
hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False.需要注意的是name要用括号括起来 1 ...
- Python的hasattr() getattr() setattr() 函数使用方法(简介)
hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False.需要注意的是name要用括号括起来 1 ...
随机推荐
- js验证银行卡号 luhn校验规则
<script type="text/javascript"> //luhn校验规则:16位银行卡号(19位通用): // 1.将未带校验位的 15(或18)位卡号从右 ...
- 发布npm
前言 我们npm publish发布的时候,一定是本地文件发布到远程仓库,并且登录到http://registry.npmjs.org(即npm adduser或npmlogin)之后,才可以进行发布 ...
- less和sass的定义和区别
less是单独的一种文件,可以理解为css的升级版: sass是一个相对新的编程语言,为web前端开发而生,可以用它来定义一套新的语法规则和函数: 区别: ① 表现方式不同:less基于javas ...
- Spring Boot 2.0尝鲜-动态 Banner
配置依赖 使用 Spring Boot 2.0 首先需要将项目依赖包替换为刚刚发布的 2.0 RELEASE,现在网站https://start.spring.io/也将 Spring Boot 2. ...
- day060 ajax文件上传 json补充
请求头ContentType 文件上传时需要指定请求头,常见的类型有3种: 1.application/x-www-form-urlencoded(可以类比成在url后面拼接的形式发送,即a=1&am ...
- Ubuntu18.04 搭建zookeeper单机版集群
一台电脑启动三个虚拟机比较折腾,这里就用一台虚拟机模拟一下zk集群. 1.后台下载安装包到 /opt目录 sudo wget -b http://archive.apache.org/dist/zoo ...
- vue项目目录结构
VUE项目目录结构 如上图所示,我们的目录结构就是这样的了. 目录/文件 说明 build 这个是我们最终发布的时候会把代码发布在这里,在开发阶段,我们基本不用管. config 配置目录,默认配置没 ...
- 分数化小数(decimal)
分数化小数 ①我的程序 #include<iostream>using namespace std;int main(void){ int a,b,c,kase=0; while(scan ...
- Hadoop学习笔记04_Hbase
大数据开发的学习,组件还是很多的,都需要掌握并多加练习. 最好的参考文档当然是官方的了. 因为Hadoop生态圈组件很多,所以,在建设之初一定要检查好各版本的兼容性.避免后期麻烦. 我的练习使用Had ...
- Tcl脚本整理照片
我那个媳妇啊,典型的只管照不管 理,32G的卡竟然被弄满了. 费好大劲好不容易整理到电脑上,可是都是数字名字,看着都头疼,索性整理下. 首先安装tcl编译环境tcl86,度娘搞的,然后开动: proc ...