python 魔法方法
__getitem__、__setitem__、__delitem__
总结:
__getitem__,__setitem_,__delitem__ : obj[‘属性’]的方式去操作属性时触发的方法
__getitem__:obj['属性'] 时触发
__setitem__:obj['属性']=属性的值 时触发
__delitem__:del obj['属性'] 时触发
赋值的底层原理都一样
f1.name = 'zhaok' #做的就是往属性字典里添加或覆盖值,原理:--->setattr----->f1.__dict__['name'] = 'egon'
f1['name'] = 'zhaok' --->setitem----->f1.__dict__['name'] = 'egon'
两个方法的底层都是一样的,只不过通过setattr,setitem中转了一下
区别:
__getattr__,__setattr__,__delattr__
obj点的方式去操作属性时触发的方法
__getitem__,__setitem_,__delitem__
obj[‘属性’]的方式去操作属性时触发的方法
__getattr__:obj.属性 不存在时触发
__setattr__:obj.属性=属性的值 时触发
__delattr__:del obj.属性 时触发
__getitem__:obj['属性'] 时触发
__setitem__:obj['属性']=属性的值 时触发
__delitem__:del obj['属性'] 时触发
class Foo:def __init__(self,name):self.name = namedef __getitem__(self, item):print('__getitem__执行,%s'%item)def __setitem__(self, key, value):print('__setitem__执行')self.__dict__[key] = value #执行添加对象的属性字典def __delitem__(self, key):print('__delitem__执行')self.__dict__.pop(key) #删除对象f1['aaa']='999'f1 = Foo('aa') #实例化对象 f1['age'] #通过字典的方式查询,会触发__getitem__的运行 f1.aaa f1.name = 'zhaok' #添加实例属性,以.的方式去设置属性,并不会触发__setitem__的执行 f1.age = 18 f1.sex = '女' f1['sex'] = '男' #以字典的方式去访问,会触发item的执行,以点的方式访问会执行attr类型的函数 print(f1.__dict__)
转载于:https://www.cnblogs.com/liyanbin/p/7610163.html
python 魔法方法相关推荐
- python 魔法方法常用_Python魔法方法指南
有很多人说学习Python基础之后不知道干什么,不管你是从w3c还是从廖雪峰的教程学习的,这些教程都有一个特点:只能引你快速入门,但是有关于Python的很多基础内容这些教程中都没介绍,而这些你没学习 ...
- python魔法方法长文详解
python魔法方法详解 1. 什么是魔法方法 魔法方式(Magic methods)是python的内置函数,一般以双下划线开头和结尾,比如__add__,__new__等.每个魔法方法都有对应的一 ...
- Python 魔法方法详解
什么是Python魔法方法 魔法方法就如同它的名字一样神奇,总能在你需要的时候为你提供某种方法来让你的想法实现.魔法方法是指Python内部已经包含的,被双下划线所包围的方法,这些方法在进行特定的操作 ...
- python 魔法方法诠释
什么是Python魔法方法 什么是魔法方法呢?它们在面向对象的Python的处处皆是.它们是一些可以让你对类添加"魔法"的特殊方法. 它们经常是两个下划线包围来命名的(比如 ini ...
- Python魔法方法
文章目录 Python魔法方法 一. 概述 1. 魔法方法 2. 常用的魔法方法 二. 构造方法 1. `__new__` 2. `__init__` 3. `__del__` 三. 操作符 1. 简 ...
- Python魔法方法指南
转自:http://pyzh.readthedocs.io/en/latest/python-magic-methods-guide.html 原文: http://www.rafekettler.c ...
- python魔法方法是什么_Python魔法方法指南(基础)
什么是魔法方法呢?它们在面向对象的Python的处处皆是.它们是一些可以让你对类添加"魔法"的特殊方法. 它们经常是两个下划线包围来命名的(比如__init__ ,__lt__ ) ...
- python魔法方法学不懂_Python进阶:Python魔法方法
密圈内有好几个同学问我:学习完了Python基础之后,学些什么呢? 看到这个问题之后,我没在考虑学习基础之后学什么,而我在想真的学完了吗?想以前我也是对着w3c对着廖雪峰的网上教程学习了一遍Pytho ...
- python魔法方法_Python魔法方法指南
有很多人说学习Python基础之后不知道干什么,不管你是从w3c还是从廖雪峰的教程学习的,这些教程都有一个特点:只能引你快速入门,但是有关于Python的很多基础内容这些教程中都没介绍,而这些你没学习 ...
- python魔法方法_python,魔法方法指南
1.简介 本指南归纳于我的几个月的博客,主题是 魔法方法 . 什么是魔法方法呢?它们在面向对象的Python的处处皆是.它们是一些可以让你对类添加"魔法"的特殊方法. 它们经常是两 ...
最新文章
- openssl 生成 cert.key cert.pem
- java解析lrc_java中用正则表达式解析LRC文件
- CoreOS rpm-ostree简介
- 蓝桥杯2015年第六届C/C++省赛B组第一题-奖券数目
- 基于Java Web的学生选课管理系统设计与实现
- refprop物性库_Refprop9.1_Refprop(制冷剂物性查询软件)下载 v9.1免费版 附教程 - 121下载站...
- 《Kafka权威指南》读书笔记
- ureport2报表详细使用(一)-集成及配置
- 极光尔沃3D打印《英雄联盟》精美手板
- python 合并txt文件
- 为手机游戏而生的Linux 发行版
- easypoi插入超链接
- js原型链,继承和promis的基本理解
- java连接qq邮箱_Java使用qq邮箱发邮件实现
- 联发科6758_联发科p70相当于骁龙什么处理器型号 对比骁龙675哪个好
- html静态页面作业——酷酷动物主题响应式网页(5页) 大学生动物主题网页作品 动物网页设计作业模板 学生网页制作源代码下载
- python爬虫爬取拉勾网职业信息
- CPU设计实战 第5章 实践任务
- X-admin经典前端后台管理模板,基于layui的轻量级前端后台管理框架,简单,兼容性好,面向所有层次的前后端程序
- android 系统 os 区别,安卓系统和Yun OS系统区别在哪里?还是阿里更会玩
热门文章
- 转换成的jar文件接收后台的信息乱码cmd解决办法
- mbed OS - ARM关于物联网(IoT)的战略布局
- concurrency runtime学习笔记之二:并行
- 时间的正则表达式验证
- CodeProject - 在C#使用SHGetFileInfo获取(管理)文件或者文件夹图标(C#封装Win32函数的一个例子)...
- LeetCode(509)——斐波那契数(JavaScript)
- 力扣 O(1) 时间插入、删除和获取随机元素 - 允许重复
- volte 是什么意思
- 基金份额净值估值是什么?
- 为什么民营银行,农村商业银行存款,定期存款利率比五大行还高?