
Python
Airfrozen
这个作者很懒,什么都没留下…
展开
-
接口,协议和鸭子类型
摘自《流畅的Python》10.3协议和鸭子类型;杂谈:把协议当作非正式的接口;11.1 Python文化中的接口和协议 Python中除了抽象基类,每个类都有接口:类实现或继承的公开属性(方法或数据属性),包括特殊方法,如__getitem__ 或__add__。 按照定义,受保护的属性和私有属性不在接口中:即便“受保护的”属性也只是采用命名约定实现的(单个前导下划线);私有属性可以轻松地...转载 2020-02-18 16:39:24 · 257 阅读 · 0 评论 -
覆盖类属性
摘自《流畅的Python》 Python 有个很独特的特性:类属性可用于为实例属性提供默认值。 Vector2d 中有个typecode类属性,因为Vector2d 实例本身没有typecode 属性,所以self.typecode 默认获取的是Vector2d.typecode 类属性的值。 但是,如果为不存在的实例属性赋值,会新建实例属性。假如我们为typecode 实例属性赋值,那么同...转载 2020-02-17 16:01:24 · 302 阅读 · 0 评论 -
Python的私有属性和“受保护的”属性
摘自《流畅的Python》 Python 不能像Java 那样使用private 修饰符创建私有属性,但是Python 有个简单的机制,能避免子类意外覆盖“私有”属性。 举个例子。有一个Dog 类,这个类的内部用到了mood 实例属性,但是没有将其开放。现在,你创建了Dog 类的子类:Beagle。如果你在毫不知情的情况下又创建了名为mood 的实例属性,那么在继承的方法中就会把Dog 类的m...转载 2020-02-17 11:38:28 · 516 阅读 · 0 评论