在python中内置了许多魔术方法,通过重写这些魔术方法可以大幅提升代码可读性,也能吃到python“语法糖”的便利。这口气真的太像营销号了~
魔术方法contains
如果我们需要定义两种不同的类主体类A跟成员类B,A有多个成员B,场上同时还有多个其他的B不是A的成员。
为了判断场上的某一个B是否是指定A的成员,通常我们需要在A里写一个方法来实现这样的判断。使用时非常的不显著 如下
"""
Time: 2022/8/10 22:36
Author: 一只正在学编程的仓鼠
Version: None
File: test.py
Describe: just_teest
"""
class Bone:
...
class Body:
spine = []
humerus = Bone()
def has(self, bone: Bone):
...
调用的时候容易与其他函数看混淆,以及实战中为了满足需求(尤其是有多个不同类型和分类的成员时)对起名困难户十分不友好
body.has(bone)
而通过重写__contains__方法可以显著提升代码可读性,而且不用写返回值为False的部分(会自动返回False)
代码修改后如下
class Bone:
...
class Body:
spine = []
humerus = Bone()
def __contains__(self, bone: Bone):
...
调用时十分方便,可以直接用python的语法糖,能够显著与其他函数方法区分开来:
bone in body