Fluent_Python_Part4面向对象,09-pythonic-obj,Python风格的对象

第四部分第9章,Python风格的对象

这一章接第1章,说明常见的特殊方法实现。

本章包括一下话题:

  1. 支持用于生成对象其它表示形式的内置函数(如repr()、bytes(),等等)
  2. 使用一个类方法实现备选构造方法
  3. 扩展内置的format()和str.format()使用的格式微语言
  4. 实现只读属性
  5. 把对象变为可散列的,以便在集合中和作为dict的键使用
  6. 利用__slots__节省内存
  7. 如何以及何时使用@classmethod和@staticmethod装饰器
  8. Python的私有属性和受保护属性的用法、约定和局限

    将开发一个简单的二维欧几里得向量类型,在这个过程中涵盖上述全部话题。

    模仿Python标准对象的行为,让Vector的行为符合Python风格。

1. 对象表示形式

面向对象语言至少都有一种获取对象的字符串表示形式的标准形式。Python提供了两种方式。

1.1 repr(): 便于开发者理解的方式返回对象的字符串表示形式。

1.2 str():便于用户理解的方式返回对象的字符串表示形式。

1.3 实现__repr__和__str__特殊方法,为repr()和str()提供支持。

1.4 reprstr、__format__都返回Unicode字符串(str类型)。只有__bytes__方法应该返回字节序列(bytes类型)。

先留坑,过于复杂

中文电子书P387

原文地址:https://www.cnblogs.com/allen2333/p/8859039.html

时间: 2024-11-06 23:45:41

Fluent_Python_Part4面向对象,09-pythonic-obj,Python风格的对象的相关文章

『流畅的Python』第9章_符合Python风格的对象

Python风格对象 以一个二元素向量对象为例 import math from array import array class Vector2d: typecode = 'd' def __init__(self, x, y): self.x = float(x) self.y = float(y) def __iter__(self): # 使得Vector2d变成可迭代对象 # __iter__方法的实现使得本类可以被转化为tuple在内的其他可迭代类 return (i for i i

python 符合Python风格的对象

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 符合python风格的对象

对象表示形式 每门面向对象的语言至少都有一种获取对象的字符串表示形式的标准方式.Python 提供了两种方式. repr() 以便于开发者理解的方式返回对象的字符串表示形式.str() 以便于用户理解的方式返回对象的字符串表示形式.正如你所知,我们要实现 __repr__ 和 __str__ 特殊方法,为 repr()和 str() 提供支持. 为了给对象提供其他的表示形式,还会用到另外两个特殊方法:__bytes__ 和 __format__.__bytes__ 方法与 __str__ 方法类

[转] Python风格规范

Google 开源项目风格指南 Python风格规范 分号 Tip 不要在行尾加分号, 也不要用分号将两条命令放在同一行. 行长度 Tip 每行不超过80个字符 例外: 长的导入模块语句 注释里的URL 不要使用反斜杠连接行. Python会将 圆括号, 中括号和花括号中的行隐式的连接起来 , 你可以利用这个特点. 如果需要, 你可以在表达式外围增加一对额外的圆括号. Yes: foo_bar(self, width, height, color='black', design=None, x=

Python风格规范

Python风格规范 整理自Google开源项目指南 分号 不要在行尾加上分号,也不要用分号将两条命令分开: 行长度 每行长度不超过80个字符: 不要使用反斜杠连接行,可以使用圆括号来连接: # True x = ('This will build a very long long ' 'long long long long long long string') URL可以单独放一行,不需要分割: 括号 除非是实现行连接,否则不要在返回语句或者条件语句中使用括号: # wrong def fo

Python(七)-面对对象编程

第一章 面向对象设计的问题 1.什么是面向对象编程          -- 以前使用函数来实现,使用函数比较复杂的实现,现在使用面向对象,实现起来更简单.          -- 面向对象就是现在就是用类和对象来进行实现     2.什么是类?什么是对象?两者又有什么关系?         -- 类里面就是函数的集合         -- 例如:obj = 类名(),             obj就是对象,这个过程叫做实例化的过程,最后调用时使用对象名.函数()的格式进行调用,例如:obj.函

Python 类型和对象(转)

译文:http://wiki.woodpecker.org.cn/moin/PyTypesAndObjects 原文:http://www.cafepy.com/article/python_attributes_and_methods/ 解释新式的Python对象(new-style): <type 'type'> and <type 'object'>是什么东西 用户定义的类及实例是如何相互关联的,和内置类型有啥关系how user defined classes and in

python之面相对象程序设计

一 面向对象的程序设计的由来 面向对象设计的由来见概述:http://www.cnblogs.com/linhaifeng/articles/6428835.html 面向对象的程序设计:路飞学院版 二 什么是面向对象的程序设计及为什么要有它 面向过程的程序设计:核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么......面向过程的设计就好比精心设计好一条流水线,是一种机械式的思维方式. 优点是:复杂度的问题流程化,进而简单化(一个复杂的问题,分成一个个小的步骤去实现,实现小的步骤将

JavaScript (五) js的基本语法 - - - 面向对象、工程模式、内置对象、JSON

一.编程思想 1.定义: 编程思想:把一些生活中做事的经验融入到程序中 面向过程:凡事都要亲力亲为,每件事的具体过程都要知道,注重的是过程 面向对象:根据需求找对象,所有的事都用对象来做,注重的是结果 面向对象特性:封装,继承,多态 (抽象性) js不是面向对象的语言,但是可以模拟面向对象的思想 js是一门基于对象的语言: 万物皆对象:---------->程序猿 程旭媛 什么是对象?  看的见,摸得到,具体特指的某个东西 2.对象分享有什么特点: 特征和行为 对象 :  有特征和行为,具体特指