当前位置: 首页 > wzjs >正文

网站做接口怎么做快速排名优化

网站做接口怎么做,快速排名优化,手机企业网站推广,24小时学会网站建设 百度云再谈向量类 为了说明用于生成对象表示形式的众多方法,我们将使用一个 Vector2d 类,它与第 1 章中的类似。这一节和接下来的几节会不断实 现这个类。我们期望 Vector2d 实例具有的基本行为如示例 9-1 所示。 示例 9-1 Vector2d 实例有多种表示形式 &g…

再谈向量类

为了说明用于生成对象表示形式的众多方法,我们将使用一个
Vector2d 类,它与第 1 章中的类似。这一节和接下来的几节会不断实
现这个类。我们期望 Vector2d 实例具有的基本行为如示例 9-1 所示。

示例 9-1 Vector2d 实例有多种表示形式

>>> v1 = Vector2d(3, 4)
>>> print(v1.x, v1.y)3.0 4.0
>>> x, y = v1 ➋
>>> x, y
(3.0, 4.0)
>>> v1 ➌
Vector2d(3.0, 4.0)
>>> v1_clone = eval(repr(v1))>>> v1 == v1_clone ➎
True
>>> print(v1)(3.0, 4.0)
>>> octets = bytes(v1)>>> octets
b'd\\x00\\x00\\x00\\x00\\x00\\x00\\x08@\\x00\\x00\\x00\\x00\\x00\\x00\\x10@'
>>> abs(v1)5.0
>>> bool(v1), bool(Vector2d(0, 0))

❶ Vector2d 实例的分量可以直接通过属性访问(无需调用读值方
法)。
❷ Vector2d 实例可以拆包成变量元组。
❸ repr 函数调用 Vector2d 实例,得到的结果类似于构建实例的源
码。
❹ 这里使用 eval 函数,表明 repr 函数调用 Vector2d 实例得到的是
对构造方法的准确表述。

❺ Vector2d 实例支持使用 == 比较;这样便于测试。
❻ print 函数会调用 str 函数,对 Vector2d 来说,输出的是一个有
序对。
❼ bytes 函数会调用__bytes__ 方法,生成实例的二进制表示形式。
❽ abs 函数会调用__abs__ 方法,返回 Vector2d 实例的模。
❾ bool 函数会调用__bool__ 方法,如果 Vector2d 实例的模为零,
返回 False,否则返回 True。

示例 9-1 中的 Vector2d 类在 vector2d_v0.py 文件中实现(见示例 9-
2)。这段代码基于示例 1-2,除了 == 之外(在测试中用得到),其他
中缀运算符将在第 13 章实现。现在,Vector2d 用到了几个特殊方法,
这些方法提供的操作是 Python 高手期待设计良好的对象所提供的。

示例 9-2 vector2d_v0.py:目前定义的都是特殊方法

from array import array
import mathclass Vector2d:typecode = 'd' ➊def __init__(self, x, y):self.x = float(x) ➋self.y = float(y)def __iter__(self):return (i for i in (self.x, self.y)) ➌def __repr__(self):
class_name = type(self).__name__return '{}({!r}, {!r})'.format(class_name, *self) ➍def __str__(self):return str(tuple(self)) ➎def __bytes__(self):return (bytes([ord(self.typecode)]) + ➏
bytes(array(self.typecode, self))) ➐def __eq__(self, other):return tuple(self) == tuple(other) ➑def __abs__(self):return math.hypot(self.x, self.y) ➒def __bool__(self):return bool(abs(self)) ➓

❶ typecode 是类属性,在 Vector2d 实例和字节序列之间转换时使
用。
❷ 在__init__ 方法中把 x 和 y 转换成浮点数,尽早捕获错误,以防
调用 Vector2d 函数时传入不当参数。
❸ 定义__iter__ 方法,把 Vector2d 实例变成可迭代的对象,这样才
能拆包(例如,x, y = my_vector)。这个方法的实现方式很简单,
直接调用生成器表达式一个接一个产出分量。
这一行也可以写成 yield self.x; yield.self.y。第 14 章会进一步讨论__iter__ 特殊方
法、生成器表达式和 yield 关键字。
❹__repr__ 方法使用 {!r} 获取各个分量的表示形式,然后插值,构
成一个字符串;因为 Vector2d 实例是可迭代的对象,所以 *self 会把
x 和 y 分量提供给 format 函数。
❺ 从可迭代的 Vector2d 实例中可以轻松地得到一个元组,显示为一个
有序对。
❻ 为了生成字节序列,我们把 typecode 转换成字节序列,然后……
❼ ……迭代 Vector2d 实例,得到一个数组,再把数组转换成字节序
列。
❽ 为了快速比较所有分量,在操作数中构建元组。对 Vector2d 实例来
说,可以这样做,不过仍有问题。参见下面的警告。
❾ 模是 x 和 y 分量构成的直角三角形的斜边长。
❿__bool__ 方法使用 abs(self) 计算模,然后把结果转换成布尔
值,因此,0.0 是 False,非零值是 True。

示例 9-2 中的__eq__ 方法,在两个操作数都是 Vector2d
实例时可用,不过拿 Vector2d 实例与其他具有相同数值的可迭代
对象相比,结果也是 True(如 Vector(3, 4) == [3, 4])。这
个行为可以视作特性,也可以视作缺陷。第 13 章讲到运算符重载
时才能进一步讨论。

我们已经定义了很多基本方法,但是显然少了一个操作:使用 bytes()
函数生成的二进制表示形式重建 Vector2d 实例。

http://www.dtcms.com/wzjs/340065.html

相关文章:

  • 质量基础设施一站式服务工作站电商网站建设价格
  • 福州做网站销售公司seo网站关键词优化哪家好
  • 广西 网站开发网站服务器失去响应
  • 网站建设有什么工作重庆网站优化排名推广
  • 短视频运营计划书seo辅助工具
  • 婚恋网站需求分析成都业务网络推广平台
  • 网站客服管理系统企业邮箱怎么开通注册
  • 网站优秀党员宣传专栏怎么做百度163黄页关键词挖掘
  • 黑苹果做网站开发抖音seo供应商
  • 原始传奇官网登录入口电商seo引流
  • 网站升级对外解决方案如何推广一个品牌
  • 找网站开发项目干净无广告的搜索引擎
  • 无锡 网站开发软文代写平台有哪些
  • 哪里可以学ps软件网课seo难不难
  • 好看的扁平化网站苏州seo门户网
  • 长春高端网站建设营销策划品牌策划
  • 查询网站最新域名百度云网盘下载
  • 凤台县城乡建设委员会网站网站广告策划
  • 北京网站制作公司转型方向河南做网站优化
  • 日本做暧视频观看网站百度网页排名怎么提升
  • 畔游网站建设seo查询工具有哪些
  • 济南软件优化网站如何使用免费b站推广网站
  • 手机网站注册卖友情链接的哪来那么多网站
  • 企业网站建设需要多钱个人如何做百度推广
  • 有哪些做网站公司百度广告位价格表
  • 物流公司做网站网站打开
  • 做酒网站网站如何进行网络推广
  • 网站建设与管理心得体会和总结网上营销是做什么的
  • 电子科技 深圳 网站建设磁力猫torrent kitty
  • 网站备案管局审核直播营销