今天读到源码时遇到了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. [poj P1475] Pushing Boxes

    [poj P1475] Pushing Boxes Time Limit: 2000MS   Memory Limit: 131072K   Special Judge Description Ima ...

  2. c#关于捕获错误的问题

    一般捕获错误,采用try,catch,但是有时捕获的错误不明朗,完全不知道是什么错误,这是可以取消try,catch调试运行,找到错误后并修正后,再把try,catch加上.

  3. Go used as value问题

    练习Go变参时遇到一个报错:used as value 代码如下: // 错误代码 func myfunc(arg ...int) { for _, n := range arg { fmt.Prin ...

  4. java项目改为web项目

     1.进入项目目录,可看到.project文件,打开. 2.找到<natures...</natures代码段. 3.在第2步的代码段中加入如下标签内容并保存: <nature& ...

  5. [Leetcode 108]有序数组转二叉搜索树Convert Sorted Array to Binary Search Tree

    [题目] 给出的升序排序的数组,个数必为奇数,要求形成二叉搜索(平衡)树. [思路] 辅助函数fun,[0,len]=>[0,mid-1]+[mid+1,len]. 当left>right ...

  6. VideoPlayer播放

    播放网络视频.本地视频:可以暂停.前后拖动.快进.快退.音量调节.下一个视频 环境:Unity5.6以上 Unity正式发布了5.6版本后,作为5.x版本的最后一版还是有不少给力的更新的.其中新加入了 ...

  7. centos7共享文件夹到windows访问--samba

    第一步:安装samba服务 yum install samba 第二步:启动samba服务 systemctl start smb 查看samba的状态 systemctl status smb 看到 ...

  8. 神州数码多区域OSPF配置

    实验要求:掌握多区域OSPF配置 拓扑如下 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface s0/1 进入端口 ip address ...

  9. linux权限相关操作

    Linux权限管理是Linux中一个十分重要的概念,也是系统安全性的重要保障.这里主要介绍Linux的基本权限和默认权限,通过理论讲解与实验演示,可以详细了解到权限的相关操作及其重要性. 文件权限 [ ...

  10. 在vue中使用Echarts画曲线图(异步加载数据)

    现实的工作中, 数据不可能写死的,所有的数据都应该通过发送请求进行获取. 所以本项目的需求是请求服务器获得二维数组,并生成曲线图.曲线图的横纵坐标均从获得的数据中取得. Echarts官方文档: ht ...