python getattr用法_python3,定制类,getattr相关用法
getattr(object, name[, default])
class Student(object):
def __init__(self):
self.name = 'Michael'
def __getattr__(self,attr):
return attr
s = Student()
s.name
--> 'Michael'
s.score
--> 'score'
_getattr__是python里的一个内建函数,动态返回一个属性
当调用不存在的属性时,Python会试图调用__getattr__(self,'score')来获取属性,并且返回score
__str__用于打印函数
__call__把类当做类似函数一样调用
代码执行流程:
Chain()创建一个实例,并且 path初始默认为 "" ,Chain().a 时,类中并没有 a 属性,Python解析器调用 getattr函数 --> __getattr__(self,path='a'),
并返回一个Chain实例,然后把/a 赋值gei path 传入,继续b,因为同样没有b 属性,执行getattr函数,将/a/b传入,
然后.user(“Michael”),先会执行getattr返回Chain实例,但是因为有()括号在,所以返回的是Chain(),
这个就会调用call函数了,然后把“ChenTian”作为path传入,然后call函数就返回了/a/b/user/ChenTian,剩下的类同。
.user("Michael”) 刚开始的user被getattr函数捕获,并返回Chain(),然后再执行__call__来调用 "Michael"
python getattr用法_python3,定制类,getattr相关用法相关推荐
- python hasattr函数_Python3 hasattr()、getattr()、setattr()函数简介
Python3 hasattr().getattr().setattr()函数简介 一.hasattr(object, name) 判断object对象中是否存在name属性,当然对于python的对 ...
- python简单定义_python定义类的简单用法
python定义的类使用方法: 使用"obj=类名()"语句将类实例化,然后用"obj.函数名"就可以调用类里面定义的各种函数了 示例如下: 将Bili类实例化 ...
- Python day 9(3) 定制类
一:__str__(返回用户友好的输出) 1 >>> class Student(object): 2 ... def __init__(self, name): 3 ... sel ...
- Python 面向对象高级编程——定制类
1.1 定制类 1.1.1 __str__ >>> class Student(object): ... def __init__(self, name): ... ...
- python中sorted函数的用法_Python3 中sorted() 函数的用法
描述 sorted() 函数对所有可迭代的对象进行排序操作. 语法 sorted(iterable, key=None, reverse=False) iterable – 可迭代对象. key – ...
- 【廖雪峰python进阶笔记】定制类
1. __str__和__repr__ 如果要把一个类的实例变成 str,就需要实现特殊方法__str__(): class Person(object):def __init__(self, nam ...
- python print函数用法_Python3.2中Print函数用法实例详解
本文实例讲述了Python3.2中Print函数用法.分享给大家供大家参考.具体分析如下: 1. 输出字符串 >>> strHello = 'Hello World' >> ...
- 【Python面向对象进阶④】——定制类
Python中的魔法方法 @ author: Flyme awei 方法名 说明 __str__ 用于返回对象的描述 __iter__ 使类可以迭代 __getitem__ 按照下标获取类元素,例如l ...
- python shelve模块_python3 shelve模块的实例用法讲解
python3 shelve模块的详解 python3 shelve模块的详解 一.简介 在python3中我们使用json或者pickle持久化数据,能dump多次,但只能load一次,因为先前的数 ...
- python syslog服务器_Python3+syslog使用及相关说明
一.说明 1.1 背景说明 syslog这个东西,最早接触是在Z公司做基线安全加固的时候有启用远程日志服务器一项,然后当时还写整理了一篇"rsyslog+loganalyzer远程日志系统搭 ...
最新文章
- 【路径规划】Astart算法——图文直观解析
- Json在线格式化站点
- C++ 输入字符串和string 类型总结
- php 实体转html,PHP 转HTML标签为实体, 把实体html标签转为,过滤html标签 | 学步园...
- 腾讯初探AI+农业 获国际AI温室种植大赛亚军
- Mock server的实现 - run Fiori application using mock data in offline mode
- Phoenix报错(6)Inconsistent namespace mapping properites
- Could not load the Tomcat server configuration at \Servers\Tomcat v7.0 Server at localhost-config
- BP神经网络的MATLAB实现
- html 背景区域设置,HTML5 背景的显示区域实现
- Mysql关键字 (MySQL 5.1参考手册)
- 显卡刷bios改型号_A卡修改BIOS软件/刷显卡BIOS软件
- 防御SQL注入的方法总结
- 怎么设置计算机语言中文,Windows10 IE11浏览器怎么把默认语言设置为中文
- Latex 同时使用中英文双语图表名称(中英文双标题)+更改图表冒号为空格
- 生成的分子图像是否可以识别为SMILES,然后再将识别后的SMILES转换为图像?
- java计算机毕业设计钢材出入库管理系统(附源码、数据库)
- 【多媒体】多媒体架构
- 快速寻找研究方向+发文章的方法!!按头安利!
- 代码生成MANIFEST.MF文件