python getattr_python getattr的美妙生活
一、简介
1、getattr是Python的内置函数
2、用法getattr(object,“attribution”,None)
object: 对象
attribution:实例方法、或者类方法(object是一个类对象的时候)必须是str
None:默认值,如果没有attribution,或者没有返回值,返回默认值
一句话简介:拿到对象是的该属性
二、实例
class Test:
age = 10
def __init__(self):
self.name = 'Donald'
@staticmethod
def sex():
return 'man'
print(getattr(Test, 'age'))
print(getattr(Test, 'sex')())
-----
10
man
1、以上是类对象,很好办,再来一个例子
a = {}
a['hello'] = 'world'
print(getattr(a, 'hello'))
-----
Traceback (most recent call last):
File "", line 1, in
AttributeError: 'dict' object has no attribute 'hello'
2、a是一个字典对象,传入hello为什么报错?因为hello并不是a的属性,可以使用dir()查看属性:
print(dir(a))
-----
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
****
print(getattr(a, '__str__'))
print(getattr(a, '__str__')())
-----
"{'hello': 'world'}"
3、如果不加括号,返回的是一串内存地址,正常显示需要想调用函数一样加上()
三、扩展
__getattr__方法
1 在Python中以__开头的称为魔法方法或专用方法,也有一个__getattr__方法。
2 改方法仅当属性不能在实例的__dict__或其父类的 __dict__中找到时,才被调用。
class Test:
age = 10
def __init__(self):
self.name = 'Donald'
@staticmethod
def sex():
print('in sex')
return 'man'
def __str__(self):
print('in str')
return str(self.name)
def __getattr__(self, item):
return f'{item},没有这个属性,访问错误'
if __name__ == '__main__':
p = Test()
print(p.age)
print(p)
print(p.sex())
print(p.sss)
-----
10
in str
Donald
in sex
man
sss,没有这个属性,访问错误
-3、在访问实例sss的时候,因为在实例对象和类的__dict__都找到不到,所以会调用该函数
python getattr_python getattr的美妙生活相关推荐
- python getattr_Python中的getattr()函数详解
最近看Dive into python第四章自省中提到getattr()函数,作为一个内建函数平时自己没怎么用过所以也不太理解这个函数的一些用法 看了下函数本身的doc getattr(object, ...
- python中getattr()和setattr()的使用
关于python中getattr()和setattr()的使用 **getattr()**用于获取类中某一属性的值:getattr(instance, 'instance_object', defau ...
- python中getattr详解
python中getattr详解 目录 getattr详解 前言 一.消除if-else 二. 反射机制 三.getattr 详解 总结 getattr详解 前言 这两天在优化腾讯云迁移平台(Smar ...
- python getattr_Python中的getattr()函数详解:
标签:Python中的getattr()函数详解: getattr(object, name[, default]) -> value Get a named attribute from an ...
- python getattr_python中getattr()的用法
1.getattr() 是python 中的一个内置函数,用来获取对象中的属性值 2.getattr(obj,name[,default]) 其中obj为对象名,name是对象中的属性,必须为字符串. ...
- python getattr_python 知识点:反射 之 getattr()实现以字符串形式导入模块和执行函数...
# -*- coding: utf-8 -*- #知识点:反射 #通过字符串的形式去导入模块,这就是反射 #并以字符串的形式执行函数 #先看简单的小粒子 temp = 'mysql' #这个字符串是模 ...
- python getattr_Python 内置方法和属性应用:反射和单例
1. 前言 python除了丰富的第三方库外,本身也提供了一些内在的方法和底层的一些属性,大家比较常用的如dict.list.set.min.max.range.sorted等.笔者最近在做项目框架时 ...
- python中getattr()的用法
1.getattr() 是python 中的一个内置函数,用来获取对象中的属性值 2.getattr(obj,name[,default]) 其中obj为对象名,name是对象中的属性,必须为字符串. ...
- [转载] python getattr_Python中的异常处理
参考链接: Python getattr() 后台回复1024,解锁无限快乐! 异常处理在任何一门编程语言里都是值得关注的一个话题,良好的异常处理可以让你的程序更加健壮,清晰的错误信息更能帮助你快速修 ...
最新文章
- 【知识星球】LeNet5,AlexNet,VGG,MobileNet它们的前身都是什么,你知道吗?
- php网站404页面302,404页面该怎么做?
- 如何从心理上缓解对浑浊物的恐惧?
- jdom编写xml自动缩进_Spring Beans 自动装配
- [梦]2005.2.10
- Python basemap模拟导弹发射
- linux网卡配置规范
- 分享一些软件工具~截图工具
- loongson龙芯屏幕分辨率设置1280×1024
- 英语对学计算机有多重要,英语对计算机专业的重要性及如何提高英语水平
- 已拿 offer!一个非 985/211 的普通二本学生从毕业季到职场的面经分享!
- 海南省计算机作品大赛,海南省教育研究培训院:关于举办第二十届海南省中小学电脑制作活动的通知...
- 原创文章:使用Vuejs实现个人所得税功能,以及5000起点和3500起点之间的缴费变化兼容移动端
- Java Web之HTML基础(一):HTML常见标签实现
- 地球人口承载力估计(c++基础)
- vb 窗体画面打不开
- python pandas 去重
- 1117—3.3v稳压芯片
- .NET 6 实现滑动验证码(二)、基本数据
- java 工具类怎么命名_java 批量重命名工具类
热门文章
- CC2530————A-D转换应用之实现外部电压测量
- C++迭代器(iterator)
- 延缓写入失败计算机硬件,Win7提示Windows延缓写入失败怎么解决?
- 国产服务器销售到海外,海外服务器怎么购买?这4个方面能帮到你
- 解决mysql插入中文字符报错的问题ERROR 1366 (HY000): Incorrect string value: '\xE5\xB0\x8F\xE6\x98\x8E' for column
- NVIDIA DPU — DPU OvS offload
- php将图片保存在数组中方法,php 把数组保存为标准的数组格式,存储到文件中...
- MQTT服务器的安装
- python网络安全论文题目_计算机科学与技术专业毕业论文参考题目.doc
- gorm软删除_Gorm.Model.DeletedAt 变量类型分析