python中的__getitem__等特殊方法(magic method)
2022/6/11 1:21:37
本文主要是介绍python中的__getitem__等特殊方法(magic method),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在python中,有很多以双下划线开头,双下划线结尾的特殊方法(magic method),比如
__getitem__(),__repr__(),__str__(),__len__()
这样,这种特殊方法是与python框架原生的len()
等方法结合使用的。
比如我们自定义两个类,如下所示。
class Girl: def __init__(self,name:str,age:int,height:int,beautiful:bool): self._name = name self._age = age self._beautiful =beautiful self._height = height def __repr__(self): return f"""{self._name.title()} [age={self._age}] [height={self._height}] [beautiful={self._beautiful}]""" class GirlGroup: def __init__(self,*girl_list): self._girls = list(girl_list) def __len__(self): return len(self._girls) def __getitem__(self,position): return self._girls[position]
我们定义了__repr__
方法,而python shell默认会调用对象的__repr__
方法。
>>> g = Girl("jerry",18,180,True) >>> g Jerry [age=18] [height=180] [beautiful=True]
str() vs repr()
print()函数默认调用__str__()方法,若对象没有定义此方法,则调用__repr__()方法
在定义了__len__(),__getitem__()
方法后,就可以利用python中的slice以及for-loop
>>> girl_group <ch01.girl.GirlGroup object at 0x7f97a84f8a00> >>> for girl in girl_group: ... print(girl._name) ... marria marria >>> girl_group[0] Marria [age=18] [height=180] [beautiful=True] >>>
还有更多的magic method,此处并不一一列举。
python的设计者使用这种方法的好处,我认为有:
- 保证python语言的一致性。对于built-in的类型以及自定义的类型,我们都可以用同一个len()方法,并且built-in类型的实现可以底层优化(cpython),而不打破使用上的一致性。
- 方便使用者利用python的优势。结合magic method,我们可以轻松的使用slice等好用的技术。
这篇关于python中的__getitem__等特殊方法(magic method)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程