鱼C论坛

 找回密码
 立即注册
查看: 2009|回复: 0

[学习笔记] 代偿

[复制链接]
发表于 2023-2-21 21:44:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
# !/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time   : 2023/2/21 21:14
# @Author : xiongming
# @File   : daichang.py
# @Desc   : 代偿

# 成员关系的检测
class C:
    def __init__(self, data):
        self.data = data
    def __contains__(self, item):
        print("contains判断了是否存在")
        return item in self.data

c = C([1, 2, 3, 4, 5])
print(3 in c)

class D:
    def __init__(self, data):
        self.data = data
    def __iter__(self):
        print("Iter", end='->')
        self.i = 0
        return self
    def __next__(self):
        print("Next", end='->')
        if self.i == len(self.data):
            raise StopIteration
        item = self.data[self.i]
        self.i += 1
        return item

d = D([1, 2, 3, 4, 5])
# 代偿,contains不存在,找iter、next代偿
print(3 in d)

class F:
    def __init__(self, data):
        self.data = data
    def __getitem__(self, item):
        print("Getitem", end=' ->')
        return self.data[item]

f = F([1, 2, 3, 4 ,5])
# 查找三次找到 3
print(3 in f)

# 布尔bool
class Q:
    def __bool__(self):
        print("Bool")
        return True

q = Q()
print(bool(q))
print("-----------------")

class E:
    def __init__(self, data):
        self.data = data
    def __len__(self):
        print("Len")
        return len(self.data)

e = E("FishC")
print(bool(e))

print("-----------------")

# 比较运算
class S(str):
    def __lt__(self, other):
        return len(self) < len(other)
    def __gt__(self, other):
        return len(self) > len(other)
    def __eq__(self, other):
        return len(self) == len(other)

s1 = S("FishC")
s2 = S("fishc")

# 判断长度
print(s1 < s2)
print(s1 > s2)
print(s1 == s2)

# 走得父类字符串比较编码值大小
print(s1 != s2)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-7 22:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表