python魔术方法__getitem__解析

news/2024/7/24 2:01:12 标签: python

代码示例1:

python">some_item = some_object[idx]

等价于

python">some_item = some_object.__getitem__(idx)

这个方法的参数idx就是你在[]之间给定的idx。这其实是对operator的一种overload。

代码示例2:

python">class Data:
    def __init__(self,id,address) -> None:
        self.id = id
        self.address = address
        self.d = {self.id:1,self.address:'1111.111.11.1'}
    
    def __getitem__(self,key):
        return ('called!')

data = Data(222,'ddd')
print (data[1])
print (data['aaa'])

called!
called!

要将类实例化后,将实例当成列表形式输入下标(我输入的是空字符),不管你输入什么,只要在类中有定义def _ _ getitem_ _(self,key):都会有默认的返回值。

代码示例3:

python">class STgetitem:

    def __init__(self, text):
        self.text = text

    def __getitem__(self, index):
        result = self.text[index].upper()
        return result


p = STgetitem("Python")
print(p[0])
print("------------------------")
for char in p:
    print(char)

P
##############################
P
Y
T
H
O
N

可以让对象实现迭代功能,这样就可以使用for…in… 来迭代该对象了


http://www.niftyadmin.cn/n/889927.html

相关文章

pythonflask接口开发处理多线程请求_flask 源码浅析(flask 如何处理请求(多线程,多进程,IO多路复用))...

之前有阅读过tornado 底层的实现,tornado 为了解决C10K 问题(没听说过C10K问题的请查看: http://www.360doc.com/content/13/0522/18/1542811_287328391.shtml),在Linux 平台下是使用了epoll(python2.6 开始支持epoll),unix 平台下 tornado 使…

斐波那契数列题型汇总

(注:暂时先记录这些问题,后期会持续更新) 斐波那契数列介绍 特点:头两项均为1,后面任一项都是其前两项之和。 程序在计算中需要用两个变量存储最近产生的两个序列值,且产生了新数据后&#xff0…

python魔术方法__setattr__、__getattr__解析

代码示例: class AttrDict(dict):def __getattr__(self, key):print (called " __getattr__" )return self[key]def __setattr__(self, key, value):print (called "__setattr__" )if key in self.__dict__:self.__dict__[key] valueelse:sel…

通话过程中显示呼叫失败_iphone怎么总是打电话出现呼叫失败求大神解救

2019-01-09手机刷机失败怎么解救导致酷派 8750刷机失败的原因:1、酷派 8750的Recovery版本不对有的机友用官方Recovery去刷第三方ROM,是无法刷入的。另外,较为老版本的Recovery无法兼容一些新的刷机脚本,会导致刷机无法执行&#…

记账类问题汇总

&#xff08;注&#xff1a;暂时先记录这些问题&#xff0c;后期会持续更新&#xff09; 1&#xff0c;用函数实现财务现金记账 #include<stdio.h> float cash; //定义全局变量&#xff0c;保存现金余额 int main(void) {int choice;float value;void income(float numb…

Pytorch多显卡训练

参考链接&#xff1a;https://blog.csdn.net/leviopku/article/details/109318226

2016年第七届蓝桥杯C/C++B组省赛题目解析

题目1&#xff1a;煤球数目 有一堆煤球&#xff0c;堆成三角棱锥形。具体&#xff1a;第一层放1个&#xff0c;第二层3个&#xff08;排列成三角形&#xff09;&#xff0c;第三层6个&#xff08;排列成三角形&#xff09;&#xff0c;第四层10个&#xff08;排列成三角形&…

Linux服务器常见问题解决

1、端口被占用&#xff0c;Web server failed to start. Port XXXX was already in use. 查看被占用的端口 netstat -anp | grep XXXX查看端口的PID sudo lsof -i:XXXX杀死进程 sudo kill -9 XXXX查看所有端口使用情况 netstat -nultp参考链接&#xff1a;链接1、链接2 2…