摘要:代码里我们经常会出现大量的条件判断,在这种情况下,我们可以实现状态机避免过度使用 有一种方式是把各种状态归为各种状态类 还有一种方式是修改实例的__class__属性 1 """ 2 状态机的实现 3 修改实例的__class__属性 4 """ 5 6 7 class Connection: 8
阅读全文
摘要:有三种方式: 全局变量、闭包、类 这里简单看一下闭包怎么实现的 1 """ 2 闭包实现有状态函数 3 """ 4 5 6 def counter(): 7 value = 0 8 9 def wrapper(): 10 # 内部实现修改外部变量 11 nonlocal value 12 value
阅读全文
摘要:主角:takewhile 判断序列中元素是否为偶数,奇数则终止 这是我们最常用的一种方式,其实没必要这么复杂 1 a = [4, 6, 7, 3] 2 3 4 def judge_is_even(item): 5 if item % 2 == 0: 6 return True 7 return Fa
阅读全文
摘要:前面说过,委托/代理是一种编程模式 获取属性值重写__getattr__即可 相反修改内部对象的属性值则重写__setattr__ 未完 待续,,,,,,
阅读全文
摘要:基于描述符建立数据模型实现赋值验证框架 在实例属性的获取和设定方面,前面已经提过可以使用property和描述符实现 1、创建数据模型的基础构建模块 1 class Descriptor: 2 def __init__(self, name=None, **opts): 3 self.name =
阅读全文
摘要:实现在返回类实例进行初始化时执行类型检查 这要求: 1 class Valley: 2 def __init__(self, origin_val): 3 # 非_val是为了确保初始化时候也能对属性执行类型检查 4 self.val = origin_val 5 6 @property 7 def
阅读全文
摘要:普通的切片对迭代器无法实行切片操作 1 from itertools import islice 2 3 4 def func(): 5 for i in [4, 9, 6, 2]: 6 if i % 2 == 0: 7 yield i 8 9 10 f = func() 11 res = isli
阅读全文