今天读到源码时遇到了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()的更多相关文章

  1. 【转】Python的hasattr() getattr() setattr() 函数使用方法详解

    Python的hasattr() getattr() setattr() 函数使用方法详解 hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回BOOL值 ...

  2. python eval() hasattr() getattr() setattr() 函数使用方法详解

    eval() 函数 --- 将字符串str当成有效的表达式来求值并返回计算结果. 语法:eval(source[, globals[, locals]]) ---> value 参数: sour ...

  3. Python的hasattr() getattr() setattr() 函数使用方法详解

    hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False.需要注意的是name要用括号括起来 1 ...

  4. Python的hasattr() getattr() setattr() 函数使用方法详解 (转)

    来自:https://www.cnblogs.com/cenyu/p/5713686.html hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回BOO ...

  5. 【Python】hasattr() getattr() setattr() 使用方法详解

    本文转自 https://www.cnblogs.com/cenyu/p/5713686.html hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回B ...

  6. python中hasattr, getattr,setattr及delattr四个方法

    通过一个实例来说明,这四个函数的用法: 首先一个如下的一个简单的类: class Animal(object): def __init__(self,name, zone): self.name = ...

  7. Python的hasattr() getattr() setattr() 函数使用方法

    hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False.需要注意的是name要用括号括起来 &g ...

  8. Python的hasattr() getattr() setattr() 函数使用方法详解--转载

    hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False.需要注意的是name要用括号括起来 1 ...

  9. Python的hasattr() getattr() setattr() 函数使用方法(简介)

    hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False.需要注意的是name要用括号括起来 1 ...

随机推荐

  1. day11_python_1124

    01 昨日内容回顾 函数名的运用: 1,特殊的变量. 2,函数名可以当做变量赋值. 3,函数名可以当做容器类类型的元素. 4,函数名可以当做函数的参数. 5,函数名可以当做函数的返回值. 闭包: 1, ...

  2. 用图片作为label,for属性IE下不起作用

    IE浏览器存在一个BUG,当你使用label的for属性达到点击label使对应的表单元素聚焦,label中的内容为图片时,IE浏览器下不起作用. 例如: <input type="c ...

  3. caffe matlab matcaffe 加载输入网络net时报错

    http://blog.csdn.net/xiaojiajia007/article/details/72850247

  4. 三、fgetc与fputc

    fgetc 功能:从流中读取一个字符 原型:int fgetc(FILE *stream); 参数: stream:要读取的流指针 返回:读取到的字符,如果读完则返回EOF,EOF是end of fi ...

  5. GOPATH

    环境变量 GOPATH 的值可以是一个目录的路径,也可以包含多个目录路径,每个目录都代表 Go 语言的一个工作区(workspace).这些工作区用于放置 Go 语言的源码文件(source file ...

  6. java中main函数的String[] args

    写java程序时main函数必须有一个字符串数组即String[] args 作用:用来获取用户从命令行输入的参数 如果main函数中不写字符串数组,则将会报错

  7. linux之安装软件,压缩解压文件

  8. 蘑菇街支付架构 PDF 下载

    蘑菇街支付架构 PDF 下载 下载地址:链接:https://pan.baidu.com/s/1ZffetaUhVMOzb9j2PSQJIQ 密码:iays http://www.java1234.c ...

  9. CentOS上升级gcc编译器使支持C++11

    首先向博主致敬,好的东西拿来共享了,用一下不错. https://blog.csdn.net/clirus/article/details/62424517 0. 目标  最近在学习c++11,我本机 ...

  10. VS Code + NWJS(Node-Webkit)0.14.7 + SQLite3 + Angular6 构建跨平台桌面应用

    一.项目需求 最近公司有终端桌面系统需求,需要支持本地离线运行(本地数据为主,云端数据同步),同时支持Window XP,最好跨平台.要求安装配置简单(一次性打包安装),安装包要小,安装时间短,可离线 ...