今天读到源码时遇到了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. Liblinear and Libsvm-rank训练数据的bash代码

    Liblinear and Libsvm-rank训练数据的bash代码: for j in "amazon_mp3" "video_surveillance" ...

  2. hdu多校第4场 B Harvest of Apples(莫队)

    Problem B. Harvest of Apples Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Su ...

  3. Spring Security 案例实现和执行流程剖析

    Spring Security Spring Security 是 Spring 社区的一个顶级项目,也是 Spring Boot 官方推荐使用的安全框架.除了常规的认证(Authentication ...

  4. 老司机浅谈linux系统学习技巧

    Linux起源于20世纪70年代,是一种优秀的操作系统系统.初次接触到linux这个系统是在大学期间,这样才发现除了windows外的另外一个有趣系统.开始抱着好奇的心态去了解,随着深入学习,笔者被它 ...

  5. GDT全局描述符表

    GDT全局描述符表 什么是GDT全局描述符表 GDT全称为Global Descriptor Table,全局描述符表. 保护模式的寻址方式不在使用寄存器分段的方式直接寻址方式了.而采用的是使用GDT ...

  6. python魔术方法(__init__,__call__,被双下划线包围的方法)

    转载link:http://pycoders-weekly-chinese.readthedocs.io/en/latest/issue6/a-guide-to-pythons-magic-metho ...

  7. 关于Idea启动配置tomcat

    1.打开file中setting中搜索Application Servers,如下图 2.添加服务器类型,例如tomcat,如下图,添加完成之后可以选定tomcat的目录,tomcat Home配置t ...

  8. C++取反交换两个数的值

    int a = 1; int b = 2; cout << "a: "<< a << endl; cout << "b: ...

  9. CSS-精灵图片的使用(从一张图片中截图指定位置图标)

      一.名词解释 在网页中,我们可以看到有很多的小图标,比如微博上的登录位置有很多这样的小图标.因为浏览器显示网页的所有内容都需要从我们自己的服务器进行下载,如果将这些图标分别存在服务器上,那么当需要 ...

  10. Post Order traverse binary tree using non-recursive way

    Process analysis Stack = 5,  Push 3, Stack = 5, 3.    Pre = 5 Current = 3, Pre = 5, Push 2 to the st ...