python get_len_Python类,特殊方法, __getitem__,__len__, __delitem__

特殊函数一般以__methodname__的形式命名,如:__init__(构造方法), __getitem__、 __setitem__(subscriptable所需method), __delitem__(del obj[key]所需method), __len__(len(…)所需method)等;

以下以什么都不做的Something类,结合lambda表达式,来说明这些特殊函数;

>>> class Something:

... pass

...

>>> s = Something()

>>>s['key1']

Traceback (most recent call last):

File "", line 1, in

TypeError: 'Something' object is not subscriptable

与subscriptable相关的函数是 __getitem__、 __setitem__,顾名思义,两者分别用于获取和设置相应的key的值;

Something.__getitem__ = lambda self, key: key

__getitem__简单的返回key;

>>> s['key1']

'key1'

>>> s[1]

1

>>> s[(1,2,3)]

(1, 2, 3)

注意:不可变类,都可以作为key;

>>> s[1] = 2

Traceback (most recent call last):

File "", line 1, in

TypeError: 'Something' object does not support item assignment

增加__setitem__方法,简单的打印key-value对;

>>> Something.__setitem__ = lambda self, key, value: print(repr(key) + ":" + repr(value))

>>> s[1] = 33

1:33

>>> s[(1,2,3)] = "333"

(1, 2, 3):'333'

>>> del s[1]

Traceback (most recent call last):

File "", line 1, in

AttributeError: __delitem__

增加__delitem__方法,简单打印

>>> Something.__delitem__ = lambda self, key : print(repr(key) + " is deleted")

>>> del s[23]

23 is deleted

>>> len(s)

Traceback (most recent call last):

File "", line 1, in

TypeError: object of type 'Something' has no len()

增加__len__方法,简单返回1

>>> Something.__len__ = lambda self : 1

>>> len(s)

1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503630.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java名片_javaweb名片管理系统

在学习基于javaweb的名片管理系统项目的时候,方便日后能及时查阅,在本平台中记录一下基于javaweb的名片管理系统的开发流程。在学习时候的选用了SSM(MYECLIPSE),这个框架不论是学习还是使用都非常方便,简单易上手。基于javaweb的名片管理系统…

python 找到两个排序数组的中位数_Python查找两个有序列表中位数的方法【基于归并算法】...

本文实例讲述了Python查找两个有序列表中位数的方法。,具体如下:今天做到的一个机试题目,很简单,这里简单记录一下:我用的是归并的思想,当然还可以用递归的方法,下面是具体实现:#!us…

wordcount java分析_JavaWordCount

配置pom文件xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">4.0.0org.examplelearning1.0-SNAPSHOTUTF-82.2.02.11.82.6.51.2.1org.apache…

java清理垃圾_教你怎样用java编写垃圾文件清理软件! | 学步园

最近总是再想怎么样提高机器的运行速度,结果想到自己编写一个垃圾文件清理软件的想法,其实很简单,程序设计的关键是如何找到垃圾文件,具体的说就是如何扫描文件找到垃圾文件:我们编写下面一个类来扫描磁盘中的所有文件…

数据可视化demo_为更快读懂报表,我们将数据可视化了

将数据可视化后,即使是复杂难懂的数据也会瞬间变得简单易懂,难就难在怎么快速将海量数据中的复杂数据信息提取,不同场景下该用那种方式展示数据更直观易懂。而这些,在奥威BI数据可视化软件上都有了答案。在常用图表的基础上&#…

数据结构与算法分析c++第四版_数据结构与算法 - 时空复杂度分析

这周主要总结了时间复杂度的学习,跟小伙伴们分享下,欢迎指正。一、为何需要分析算法复杂度挺多同学本科都学习过数据结构和算法这门课,但是有没有想过这门课到底是解决什么问题?科学家设计这些数据结构和算法是要干嘛?…

java泰拉轴距_Java面向对象

Java面向对象什么是对象世界万物皆为对象,凡是能看得见摸得着的所以东西都叫对象。对象是由属性和行为组成,属性是对象所具有的特征,而行为是对象可以做的动作。>例如生活中常见的事物:汽车。汽车的品牌型号、颜色、轴距、车身…

python函数代码_如何显示Python函数的代码?

这有点老套,但是如果这是您经常要做的事情,您可以使用readline模块和函数修饰符。在class PrintableFunction(object):"""A class that contains a function and its start and end pointsin the readline history"""def …

mysql5.7 xtrabackup_MySQL 5.7 基于GTID建立运行主库的从库-xtrabackup+mysqldump

一.GTID innobackupex备份实现主从同步1)master备份innobackupex --defaults-file/etc/my.cnf --userroot --password123456 --parallel4 /backup2)拷贝到slave上,并prepare和copy backupinnobackupex --defaults-file/etc/my.cnf --apply-log --userroot --passwor…

swift for循环_Swift | 实战一个简单的素数计算器demo

Swift实战一个简单的素数计算器demo本期我们来介绍如何用storyboard来实现一个素数计算器demo,storyboard可以明确地知道界面上的组件与代码的关系,而且比起仅用代码写要方便不少。No.1制作一个简单的界面制作一个简单的界面我们首先要使用storyboard来绘…

java实验金额转换_java 数字金额转换中文金额

public static String digitUppercase(double n){String fraction[] {"角", "分"};String digit[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌&quo…

java文件传输连接方式_Java 学习笔记 网络编程 使用Socket传输文件 CS模式

Socket的简单认识Socket是一种面向连接的通信协议,Socket应用程序是一种C/S(Client端/Server端)结构的应用程序 Socket是两台机器间通信的端点。 Socket是连接运行在网络上的两个程序间的双向通讯端点。Socket通信原理Server服务端的输入流相当于Client客户端的输出…

如何给python升级_python升级后,如何给virtualenv里的python进行升级

我也碰到了这个问题,用brew升级python的时候忘记了备份,升级之后才发现pip也不能正常工作了,不过幸好找到了解决方法,重新安装几百兆的package实在是不能忍……先将虚拟环境中的部分文件删除cd rm .Pythonrm bin/pip{,2,2.7}rm bi…

创建线程的三种方法_Netty源码分析系列之NioEventLoop的创建与启动

前言前三篇文章分别分析了 Netty 服务端 channel 的初始化、注册以及绑定过程的源码,理论上这篇文章应该开始分析新连接接入过程的源码了,但是在看源码的过程中,发现有一个非常重要的组件:NioEventLoop,出现得非常频繁…

java彩票案例_java彩票例子

1.[代码]java彩票例子import java.util.HashSet; //自动过滤重复的集合import java.util.Random;public class LuckyTic {public static void main(String[] args) {// TODO Auto-generated method stubHashSet hs new HashSet();Random r new Random();int num r.nextInt()…

java正则表达式匹配xml标签_用正则表达式匹配HTML\XML等文件中的标签

测试用HTML源文件:View Code《完美世界:天界的召唤》缤纷圣诞总动员[ 中华网 1小时前]经过了平安夜和圣诞节,节日的气氛被推到了最高点!《完美世界:天界的召唤》为玩家准备了精彩纷呈的圣诞节活动,而玩家也…

python cursor游标_第二十三天 python中游标的使用

游标(cursor):系统为用户开通的一个数据缓冲区,用于存放SQL语句执行结果。用户使用的sql会逐一的在游标中获取记录,并赋值给主变量,交由Python进一步处理,一组主变量只能存放一条记录。例题:from T1 import…

python 列表比较不同物质的吸热能力_python列表里面根据一定的条件挑选元素

update:之前一版是错的,忽略了两层栈深还必须ticket、spce连续的要求换个解法,代码有些冗长#!/usr/bin/env python# -*- coding: utf-8 -*-def is_ticket(node):return node.startswith(ticket)def is_spec(node):return node.startswith(spec)def deal1…

java中arraycopy的用法_[jdk源码阅读系列]Java中System.arraycopy()的用法

本文转载,原文链接:3分钟了解Java中System.arraycopy的用法 - 伊万夫斯基 - 博客园 https://www.cnblogs.com/benjieqiang/p/11428832.html3分钟了解Java中System.arraycopy的用法System提供了一个静态方法arraycopy(),我们可以使用它来实现数组之间的复…

人工智能python小程序_Python:一个可以套路别人的python小程序

一个可以套路别人的python小程序~先简要介绍一下程序。程序是使用pycharm工具,python语言所写。程序包括客户端 client.py 和服务器端 server.py 两部分,利用了python中的socket包。咳咳,使用方法来了!首先,你需要你和…