摘要:
不要子类化内置类型 python2.2之前,内置类型不能子类化 python2.2之后可以子类化,但是内置类型的方法无法调用其子类覆盖的方法 如下例子,内置类型dict的__init__和__update__方法会忽略子类覆盖的__setitem__方法 因此,不要直接子类化内置类型,内置类型的方法 阅读全文
posted @ 2022-03-14 19:33
肖肖凯
阅读(76)
评论(0)
推荐(0)
摘要:
接口与协议定义 接口 类实现或继承的公开属性,包括特殊方法,都是类的接口。即可以为外界所知的都是接口。受保护的属性和私有属性不是接口,虽然在python中并没有真正的受保护属性和私有属性。接口有两类,一类是正式的,即抽象基类。一类是非正式的,即协议。 协议 协议也是接口,但不是正式的,协议只由文档了 阅读全文
posted @ 2022-03-14 16:29
肖肖凯
阅读(374)
评论(0)
推荐(0)
摘要:
__hash__ 要让对象可散列,就要实现其__hash__方法,常用方案是将对象中各个分量的散列值异或,构成整个向量对象的散列值。 其中reduce是归约函数,其有三个参数,第一个是有两个操作数的函数,第二个是可迭代对象,第三个是可迭代对象为空时返回的默认值。 operator模块以函数的形式提供 阅读全文
posted @ 2022-03-14 15:45
肖肖凯
阅读(77)
评论(0)
推荐(0)
摘要:
python中属性查找流程 对于my_obj.x表达式,首先检查my_obj实例中有没有名为x的实例属性 如果上一步没找到,检查对应的类中有没有名为x的类属性,因为类属性可以作为实例属性的默认值 如果上一步没找到,沿着继承树继续查找...... 如果仍找不到,则会调用__getattr__方法。 _ 阅读全文
posted @ 2022-03-14 11:48
肖肖凯
阅读(79)
评论(0)
推荐(0)
摘要:
python协议 在python中创建功能完善的序列类型无需使用继承,只需实现符合序列协议的方法。 在面向对象编程中,协议是非正式的接口。非正式是指跟抽象基类不一样,协议只在文档中定义,不在代码中定义。 python中,只要实现了__len__和__getitem__两个特殊方法,则可认为该类是序列 阅读全文
posted @ 2022-03-14 10:40
肖肖凯
阅读(20)
评论(0)
推荐(0)