详细见老师博客:http://www.cnblogs.com/Eva-J/articles/7351812.html#_label9

__getitem__\__setitem__\__delitem__

class Foo:
def __init__(self,name,age,sex):
self.age=age
self.name=name
self.sex=sex
def __getitem__(self, item):
print('执行了__getitem__')
if item in self.__dict__.keys():
# return self.item 此处不能这样写,会报错,没有这个属性
return self.__dict__[item]
else:
print('have no your find')
def __setitem__(self,key,value):
print('执行了__seritem__')
self.__dict__[key]=value
def __delitem__(self,key):
print('执行了__delitem__')
del self.__dict__[key]
alex= Foo('alex',18,'male')
print(alex['name'])#调用了__getitem__
print(alex.name)#正常的调法
alex.age=20#正常的改法
print(alex.__dict__)
alex['age']=200#调用了__setitem__,并且改正了值
print(alex.__dict__)
del alex['name']#调用了__delitem__
#此时的del 并不是删除的意思,而是调出了__delitem__
#这个方法而已,所以需要在__delitem__中加入删除的代码
print(alex.__dict__)
'''输出结果执行了__getitem__
alex
alex
{'age': 20, 'sex': 'male', 'name': 'alex'}
执行了__seritem__
{'age': 200, 'sex': 'male', 'name': 'alex'}
执行了__delitem__
{'age': 200, 'sex': 'male', 'name': 'alex'}
'''

注意__item__的各个内置函数的调用,

__getitem__的调用方式是:对象[key]

            等价的调用方式:对象.属性

__setitem__的调用方式是:对象[key]=value

            等价的调用方式:对象 .属性=value

__delitem__的调用方式时:del 对象[key]  只是调用了__delitem__方法而已,并不是真正的删除

            等价的调用方式:del 对象.属性

这个方法主要是记住所有的 . 变为[],便可以调此方法了

有一个的函数的调用方式很相似:

      记起来了,这个是把方法变为属性的装饰器@property,通过修改达到了和正常属性的调法

面向对象_item项目的更多相关文章

  1. 面向对象-QuickHit项目

    package com.ketang.game; /** * 游戏级别类 * @author * */ public class Level { private int levelNo; //各级别编 ...

  2. THE LAST ONE!! 2017《面向对象程序设计》课程作业八

    THE LAST ONE!! 2017<面向对象程序设计>课程作业八 031602230 卢恺翔 GitHub传送门 题目描述 1.时间匆匆,本学期的博客作业就要结束了,是否有点不舍,是否 ...

  3. 招聘.NET开发人员(截止于2015-06-15)

    文章更新 2015-06-15 01:00AM: 感谢各位的支持,简历和解决方案接收截止.2015-06-08 08:30AM: 已经收到一些简历和解决方案,正在筛选中.职位仍然开放,欢迎发送简历及解 ...

  4. 面向侧面的程序设计AOP-------《二》本质

    本文转载自张逸:晴窗笔记 AOP技术本质 2.2.1 技术概览 AOP(Aspect-Oriented Programming,面向方面编程),可以说是OOP(Object-Oriented Prog ...

  5. 手写一个自己的简单MVC框架myPHP

    myPHP框架 采用的是MVC 思想,应用纯面向对象及项目单一入口,实现的一个自定义的框架.(自己兴趣的练习) 一.项目单一入口 入口文件 myphp\index.php前台 一个网站所有的请求都请求 ...

  6. C++ 我想这样用(一)

    虽然还是菜鸟,但我是一个地地道道的c程序员,甚至一度很讨厌C++(虽然现在也是). 为了在不用C++的情况下学习和使用面向对象而长期奔走,曾经用过一年的Python,后终放弃.之后很长一段时间里摆弄O ...

  7. AOP技术基础

    1.引言 2.AOP技术基础 3.Java平台AOP技术研究 4..Net平台AOP技术研究 2.1 AOP技术起源 AOP技术的诞生并不算晚,早在1990年开始,来自Xerox Palo Alto ...

  8. spl_autoload_register()

    5.3版本增加了命名空间prepend函数   <?php // function __autoload($class) {//     include 'classes/' . $class  ...

  9. AOP 面向方面的编程 Aspect Oriented Programing --第一次听说呢,汗!

    http://wayfarer.cnblogs.com/articles/241024.html 抄在这里,方便复习! AOP技术基础   1.引言2.AOP技术基础 3.Java平台AOP技术研究4 ...

随机推荐

  1. 利用NPOI生成word文档(c#)

    WordTest.aspx.cs using System; using System.IO; using System.Text; using System.Web; using System.We ...

  2. 『The Captain 最短路建图优化』

    The Captain(BZOJ 4152) Description 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点走到n号点的最小 ...

  3. .net文件上传默认限制了大小4M

    如果需要上传比较大的文件(文件大小大于4M).则需要在webconfig里面<system.web>修改httpRuntime节点: <httpRuntime targetFrame ...

  4. ADO.NET五大对象详解

    Connection 连接对象 用于对数据库的连接操作.传入的参数为连接字符串. Commamd 命令对象 用于执行对数据库的操作 ,传入的参数可以为连接字符串或存储过程,也必须传入连接对象的实例. ...

  5. TCP/IP 四次断开

    网络连接状态 网络连接状态(11种)非常重要这里既包含三次握手中的也包括四次断开中的,所以要熟悉. LISTEN 被动打开,首先服务器需要打开一个socket进行监听,监听来自远方TCP端口的连接请求 ...

  6. Hibernate【inverse和cascade属性】知识要点

    Inverse属性 Inverse属性:表示控制权是否转移.. true:控制权已转移[当前一方没有控制权] false:控制权没有转移[当前一方有控制权] Inverse属性,是在维护关联关系的时候 ...

  7. mysql数据库迁移文档

    数据库迁移文档 一.需求 确保数据库稳定的运行,为开发人员提供方便的测试数据库和生产数据库的环境. 二.数据库整体架构(master/slave) 1.slave数据库安装 rpm -Uvh http ...

  8. SpringMVC学习笔记之二(SpringMVC高级参数绑定)

    一.高级参数绑定 1.1 绑定数组 需求:在商品列表页面选中多个商品,然后删除. 需求分析:功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Cont ...

  9. 第47章 授权端点(Authorize Endpoint) - Identity Server 4 中文文档(v1.0.0)

    授权端点可用于通过浏览器请求令牌或授权码.此过程通常涉及最终用户的身份验证和可选的同意. 注意 IdentityServer支持OpenID Connect和OAuth 2.0授权请求参数的子集.有关 ...

  10. EF 批量 添加 修改 删除

    1批量添加    db.T_Investigator.AddRange(list) 2批量删除    db.T_Investigator.RemoveRange(list) 3批量修改   for 循 ...