第四部分第9章,Python风格的对象 这一章接第1章,说明常见的特殊方法实现. 本章包括以下话题: 支持用于生成对象其它表示形式的内置函数(如repr().bytes(),等等) 使用一个类方法实现备选构造方法 扩展内置的format()和str.format()使用的格式微语言 实现只读属性 把对象变为可散列的,以便在集合中和作为dict的键使用 利用__slots__节省内存 如何以及何时使用@classmethod和@staticmethod装饰器 Python的私有属性和受保护属性的用…
#<流畅的Python>读书笔记 # 第9章 符合Python风格的对象 # 本章包含以下话题: # 支持用于生成对象其他表示形式的内置函数(如repr().bytes(),等等) # 使用一个类方法实现备选构造方法 # 扩展内置的 format() 函数和 str.format() 方法使用的格式微语言 # 实现只读属性 # 把对象变为可散列的,以便在集合中及作为 dict 的键使用 # 利用 __slots__ 节省内存 # 我们将开发一个简单的二维欧几里得向量类型,在这个过程中涵盖上述全…
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 25.0px Helvetica } 对象表示形式 每门面向对象的语言至少都有一种获取对象的字符串表示形式的标准方式.Python 提供了两种方式 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica } repr() 以便于开发者理解的方式返回对象字符串表示形式 p.p1 { margin: 0.0px 0.0px 0.0px 0.…
对象表示形式 每门面向对象的语言至少都有一种获取对象的字符串表示形式的标准方式.Python提供了两种方式 repr()便于开发者理解的方式返回对象的字符串表示形式 str()便于用户理解的方式返回对象的字符串表示形式 要实现__repr__,__str__特殊方法为repr(),str()提供支持 classmethod和staticmethod classmethod通常用来定义操作类,而不是操作实例的方法.改变了调用方法的方式,因此,类方法的第一个参数是类本身,而不是实例,classmet…
对象表示形式 每门面向对象的语言至少都有一种获取对象的字符串表示形式的标准方式.Python 提供了两种方式. repr() 以便于开发者理解的方式返回对象的字符串表示形式.str() 以便于用户理解的方式返回对象的字符串表示形式.正如你所知,我们要实现 __repr__ 和 __str__ 特殊方法,为 repr()和 str() 提供支持. 为了给对象提供其他的表示形式,还会用到另外两个特殊方法:__bytes__ 和 __format__.__bytes__ 方法与 __str__ 方法类…
array和bytes的转换 - 每个array必须有一个type_code,以此为依据解析底层字节序列 - array有一个frombytes方法,可以把字节序列按type_code转换成Array - bytes构造函数接受一个可迭代对象作为参数,它依次遍历可迭代对象,将每个元素按其本身的数据类型拆成字节 from array import array def create_bytes(): type_code = 'f' # ord函数返回字符的编码 print('type_code:',…
首先来看下对象的表现形式: class People():     def __init__(self,name,age):         self.name=name         self.age=age if __name__== "__main__":     p=People('zhf','30')     print p E:\python2.7.11\python.exe E:/py_prj/fluent_python/chapter9.py <__main__…
Python风格规范 分号 Tip 不要在行尾加分号, 也不要用分号将两条命令放在同一行. 行长度 Tip 每行不超过80个字符 例外: 长的导入模块语句 注释里的URL 不要使用反斜杠连接行. Python会将 圆括号, 中括号和花括号中的行隐式的连接起来 , 你可以利用这个特点. 如果需要, 你可以在表达式外围增加一对额外的圆括号. Yes: foo_bar(self, width, height, color='black', design=None, x='foo', emphasis=…
Python风格规范 分号 Tip 不要在行尾加分号, 也不要用分号将两条命令放在同一行. 行长度 Tip 每行不超过80个字符 例外: 长的导入模块语句 注释里的URL 不要使用反斜杠连接行. Python会将 圆括号, 中括号和花括号中的行隐式的连接起来 , 你可以利用这个特点. 如果需要, 你可以在表达式外围增加一对额外的圆括号. Yes: foo_bar(self, width, height, color='black', design=None, x='foo', emphasis=…
Python风格规范   分号 Tip 不要在行尾加分号, 也不要用分号将两条命令放在同一行. 行长度 Tip 每行不超过80个字符 例外: 长的导入模块语句 注释里的URL 不要使用反斜杠连接行. Python会将 圆括号, 中括号和花括号中的行隐式的连接起来 , 你可以利用这个特点. 如果需要, 你可以在表达式外围增加一对额外的圆括号. Yes: foo_bar(self, width, height, color='black', design=None, x='foo', emphasi…