面向对象_item项目
详细见老师博客: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项目的更多相关文章
- 面向对象-QuickHit项目
package com.ketang.game; /** * 游戏级别类 * @author * */ public class Level { private int levelNo; //各级别编 ...
- THE LAST ONE!! 2017《面向对象程序设计》课程作业八
THE LAST ONE!! 2017<面向对象程序设计>课程作业八 031602230 卢恺翔 GitHub传送门 题目描述 1.时间匆匆,本学期的博客作业就要结束了,是否有点不舍,是否 ...
- 招聘.NET开发人员(截止于2015-06-15)
文章更新 2015-06-15 01:00AM: 感谢各位的支持,简历和解决方案接收截止.2015-06-08 08:30AM: 已经收到一些简历和解决方案,正在筛选中.职位仍然开放,欢迎发送简历及解 ...
- 面向侧面的程序设计AOP-------《二》本质
本文转载自张逸:晴窗笔记 AOP技术本质 2.2.1 技术概览 AOP(Aspect-Oriented Programming,面向方面编程),可以说是OOP(Object-Oriented Prog ...
- 手写一个自己的简单MVC框架myPHP
myPHP框架 采用的是MVC 思想,应用纯面向对象及项目单一入口,实现的一个自定义的框架.(自己兴趣的练习) 一.项目单一入口 入口文件 myphp\index.php前台 一个网站所有的请求都请求 ...
- C++ 我想这样用(一)
虽然还是菜鸟,但我是一个地地道道的c程序员,甚至一度很讨厌C++(虽然现在也是). 为了在不用C++的情况下学习和使用面向对象而长期奔走,曾经用过一年的Python,后终放弃.之后很长一段时间里摆弄O ...
- AOP技术基础
1.引言 2.AOP技术基础 3.Java平台AOP技术研究 4..Net平台AOP技术研究 2.1 AOP技术起源 AOP技术的诞生并不算晚,早在1990年开始,来自Xerox Palo Alto ...
- spl_autoload_register()
5.3版本增加了命名空间prepend函数 <?php // function __autoload($class) {// include 'classes/' . $class ...
- AOP 面向方面的编程 Aspect Oriented Programing --第一次听说呢,汗!
http://wayfarer.cnblogs.com/articles/241024.html 抄在这里,方便复习! AOP技术基础 1.引言2.AOP技术基础 3.Java平台AOP技术研究4 ...
随机推荐
- 【学习】在Windows10平台使用Docker ToolBox安装docker(一)
前言:今天距离元旦还有44天,时间点是18:11:45,想了想一路学习的过程和其中遇到的困难,其中有克服的,有放弃的,这有可能是我自己意志不坚定吧,学习docker也是我当下的一个目标,不知道会是成功 ...
- ConcurrentModificationException 异常处理
在工作中碰到有个异常:java.util.ConcurrentModificationException 腾讯bugly工具给出的解决方案和说明如下:该异常表示迭代器迭代过程中,迭代的对象发生了改变, ...
- 软件性能测试技术树(三)----数据库(MySQL)性能
全图: MySQL重点监控指标: MySQL主流分支: 数据库架构设计: MySQL慢查询: SQL语句分析与调优: MySQL索引: MySQL存储引擎: MySQL实时监控: MySQL集群监控工 ...
- 基于Spring cloud Ribbon和Eureka实现客户端负载均衡
前言 本案例将基于Spring cloud Ribbon和Eureka实现客户端负载均衡,其中Ribbon用于实现客户端负载均衡,Eureka主要是用于服务注册及发现: 传统的服务端负载均衡 常见的服 ...
- 大战Java虚拟机【1】—— 内存
前言 要了解Java虚拟机首先要知道的基础就是内存.虚拟机存在的意义就是对内存进行管理,因为不用人为的去管理每个对象的内存,所以才让java使用起来那么方便,不用像c.c++那样去free. 运行时数 ...
- C#7.0新特性
前言 微软昨天发布了新的VS 2017 ..随之而来的还有很多很多东西... .NET新版本 ASP.NET新版本...等等..太多..实在没消化.. 分享一下其实2016年12月就已经公布了的C#7 ...
- ROW_NUMBER() OVER()函数用法;(分组,排序),partition by
转载:https://www.cnblogs.com/alsf/p/6344197.html 1.row_number() over()排序功能: (1) row_number() over()分组排 ...
- 单元测试与Mockito
1.什么是单元测试? 顾名思义单元测试就是对软件系统中最小的单元(函数.类)做测试,类似焊接电路板前对每个电容器(电子元器件)的测试.从软件测试分级来看,单元测试是最底层也是离程序员最近的一层,一般由 ...
- (3)Maven快速入门_3在Eclipse中创建Maven项目打包成jar
Eclipse中创建Maven项目 new ---> maven project ----> next 如下 普通java项目 选择 如下 quickstart 创建项目 : 输入 G ...
- OO Homework One Notes
系数/指数 过大 溢出(True) eg. - +999999999454554999999 * x ^ -85858554545454545548585858858 x前存在两个符号,与x有空格分离 ...