【python魔术方法】在python中优雅地得到两个不同类的 in/包含/组份/成员关系

在python中内置了许多魔术方法,通过重写这些魔术方法可以大幅提升代码可读性,也能吃到python“语法糖”的便利。这口气真的太像营销号了~


魔术方法contains

如果我们需要定义两种不同的类主体类A成员类BA有多个成员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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值