python之 __getattr__、__getattr__、__getitem__、__setitem__ 使用
python之 __getattr__、__getattr__、__getitem__、__setitem__ 使用
__getattr__内置使用点号获取实例属性属性如 s.name,自调用__getattr__
__setattr__设置类实例属性 如s.name='tom',自调用__setattr__
__getitem__ 使用[]获取实例属性 如s['name'],自调用__getitem__
__setitem__ 使用[]设置实例属性如 s['name'] = 'tom' ,自调用__setitem__
__dict__ 为参数字典
对象['X'] #执行__getitem__
对象['X'] = 123 #执行__setitem__
对象.X #执行__getattr__
对象.X =123 #执行__setattr__
上代码:
class Student:
def __getattr__(self, item):
return item + ' is not exits' def __setattr__(self, key, value):
self.__dict__[key] = value def __getitem__(self, item):
return self.__dict__[item] def __setitem__(self, key, value):
self.__dict__[key] = value s = Student()
print(s.name) # 调用__getattr__方法 输出'name is not exits'
s.age = 1 # 调用__setattr__ 方法
print(s.age) # 输出 1
print(s['age']) # 调用 __getitem__方法 输出1
s['name'] = 'tom' # 调用 __setitem__ 方法
print(s['name']) # 调用 __getitem__ 方法 输出 'tom'
python之 __getattr__、__getattr__、__getitem__、__setitem__ 使用的更多相关文章
- python中的__len__,__getitem__ __setitem__ __delitem__ __contains__
可变集合需要实现: __len__ __getitem__ __setitem__ __delitem__不可变集合需要实现: __len__ __getitem__ __len__:返回 ...
- python 魔法方法之:__getitem__ __setitem__ __delitem__
h2 { color: #fff; background-color: #7CCD7C; padding: 3px; margin: 10px 0px } h3 { color: #fff; back ...
- __getitem__ __setitem__ __delitem__ 使用
#__getitem__ __setitem__ __delitem__运行设置key value值了class fun: def __init__(self): print('test') def ...
- python之函数用法__getitem__()
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法__getitem__() #http://www.cnblogs.com/hongf ...
- python 中__setattr__, __getattr__,__getattribute__, __call__使用方法
object._getattr_(self, name) 拦截点号运算.当对未定义的属性名称和实例进行点号运算时,就会用属性名作为字符串调用这个方法.如果继承树可以找到该属性,则不调用此方法 实例in ...
- Python中__get__, __getattr__, __getattribute__的区别及延迟初始化
本节知识点 1.__get__, __getattr__, __getattribute__的区别 2.__getattr__巧妙应用 3.延迟初始化(lazy property) 1.__get__ ...
- Python魔法方法__getattr__和__getattribute__详解
在Python中有这两个魔法方法容易让人混淆:__getattr__和getattribute.通常我们会定义__getattr__而从来不会定义getattribute,下面我们来看看这两个的区别. ...
- python __getitem__, __setitem__ 实现属性的索引式存取
class MyDictionary(object): """docstring for MyDictionary""" kv = {} d ...
- Python的魔法函数之 - __len__,__getitem__,__setitem__,__delitem__
# 对象作为len()函数的参数是必须实现该方法 __len__ # 使用类似字典方式访问成员时必须实现 dic['pro_name'] __getitem__ # 使用类似字典方式设置成员时必须实现 ...
随机推荐
- codeforces A. Punctuation 解题报告
题目链接:http://codeforces.com/problemset/problem/147/A 题目意思:给定一篇文章,需要对这篇文章进行编辑,使得:(1)两个单词之间有一个空格分开 (2) ...
- html5--3.14 lable元素和label属性
html5--3.14 lable元素和label属性 学习要点 掌握label元素的使用 掌握label属性的使用 lable元素 用来为 input 元素定义标注(标记),建立一个与之相关联的标签 ...
- 「BZOJ3083」遥远的国度(树剖换根
3083: 遥远的国度 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 4859 Solved: 1372[Submit][Status][Discu ...
- 什么是weex
Weex是一个使用web开发体验来开发高性能原生应用的框架 在集成WeexSDK之后,你可以使用javaScript和现代流行的前端框架来开发移动应用. Weex的结构是解耦的,渲染引擎与语法层是分开 ...
- JS获取元素的offsetTop,offsetLeft等相关属性
1. obj.clientWidth //获取元素的宽度 obj.clientHeight //元素的高度 obj.offsetLeft //元素相对于父元素的left obj.offsetTop / ...
- 华为CodeCraft2018 周进展
上周: python验证lstm,效果不好.很多拟合的是直线.C++抄了个lstm,输出也是直线,不知道是程序的问题,还是模型的问题. 尝试bp神经网络求解.代码是抄的.回看天数是写死的,隐层只有一层 ...
- NodeJS REST API with MySQL and Express
http://www.nodewiz.biz/nodejs-rest-api-with-mysql-and-express/ NPM Modules Express felixge/node-mysq ...
- 方法名的string类型应用(补)
string strClass = "stringConvertClass.test"; //命名空间+类名 string strMethod = "Method&quo ...
- C# 外界调用方法是 方法名是string类型的解决方法
- Android开发相关工具(eclipse篇)
ADT 安装该工具后才能配置Android SDK包,使可以在eclipse里开发Android程序 AVD Android模拟器管理工具,创建删除Android模拟器 SDK Manager And ...