python - 什么时候使用 Python 特殊方法?

标签 python

我知道类可以实现各种特殊的方法,比如__iter__, __setitem__, __len__, __setattr__ ,以及许多其他人。但是我什么时候应该使用它们呢?任何人都可以描述我想要实现它们并且它们会简化 Python 编程的典型场景吗?

谢谢,Boda Cydo。

最佳答案

我认为你基本上回答了你的问题。

熟悉特殊方法。如果您发现使用一个会使您的程序更简单,请使用它。如果您不明白它的用途,或者觉得它是一个更复杂的解决方案 - 您已经回答了问题。不要使用它。

典型的场景是:

  • 覆盖运算符

  • 捕获对不存在的属性的访问并处理该访问 (__getattr__)

  • 操作类和实例创建(__init____slots____new__)

  • 自定义字符串表示(__str____repr__)

  • 允许可调用性(__call__)

  • 连接到方便/常用的内置语法(__getitem____len__ 等...)

这些内容大部分在 https://docs.python.org/reference/datamodel.html#specialnames 中介绍和 http://docs.python.org/reference/datamodel.html#special-method-names

关于python - 什么时候使用 Python 特殊方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2428391/

相关文章:

Python - Selenium PhantomJS - JSON 错误

python - 使用 numpy 高效地将 16 位图像数据转换为 8 位显示,具有强度缩放

python - Chatbot 使用 pdf 文档作为源

python - 从原子力显微镜测量计算粒度分布

python - ** 之后的参数必须是映射,而不是 SQLAlchemy 数据库中的 str

Python 列表字符替换和复制

python - 合并 Pandas 数据框

python - 地址的正则表达式在 Regex 101 (Python) 中工作,而不是在 Python 中使用 re.match?

python - 我可以使用Python在App Engine中创建线程吗?

python - 从二维 numpy 数组中获取 x、y、值一维数组(线性索引)