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

2019年做网站公司网页制作模板

2019年做网站,公司网页制作模板,浙江建设职业技术学院官方网站,经典创意设计300例特殊方法的存在是为了Python解释器调用的#xff0c;你自己并不需要去调用他们#xff0c;比如说my_object.len()这种写法是没有的#xff0c;应该使用len(my_object)。在使用len(my_object)的时候#xff0c;如果my_object是一个自定义类的对象#xff0c;那么Python会自… 特殊方法的存在是为了Python解释器调用的你自己并不需要去调用他们比如说my_object.len()这种写法是没有的应该使用len(my_object)。在使用len(my_object)的时候如果my_object是一个自定义类的对象那么Python会自己去调用其中你实现的len方法。 1.2 如何使用特殊方法 接下来进入1.2节的学习承接概要我们可以知道自定义类中特殊方法的调用写法那么如果是Python内置的类型比如列表list、字符串str、字节序列bytearray等那么CPython会抄个近路len实际上会直接返回PyVarObject里的ob_size属性。PyVarObject是表示内存中长度可变的内置对象的语言结构体。直接读取这个值比调用一个方法快很多。 很多时候特殊方法的调用是隐式的比如for i in x:这个语句背后其实用的是iter(x),而这个函数的背后则是x.iter()方法当然前提是这个方法在x中被实现了。 通常除非有大量元编程存在否则直接调用特殊方法的频率会远低于去实现他们的次数。唯一的例外可能是init方法目的是在你自己的字类的init方法中调用超类的构造器。通过内置的函数例如len、str、iter等等来使用特殊方法是最好的选择。这些内置函数不仅会调用特殊方法而且对于内置类来说他们速度更快。 1.2.1 模拟数值类型 利用特殊方法可以让自定义对象通过加号“”或是别的运算符进行运算。 我们首先实现一个二维向量vector类示例 1-2 一个简单的二维向量类1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23from math import hypot class Vector: def __init__(self, x0, y0): self.x x self.y y def __repr__(self): return Vector(%r, %r) % (self.x, self.y) def __abs__(self): return hypot(self.x,self.y) def __bool__(self): return bool(abs(self)) def __add__(self, other): x self.x other.x y self.y other.y return Vector(x,y) def __mul__(self, scalar): return Vector(self.x * scalar, self.y * scalar) 接下来对类里面的特殊方法进行操作 1 2 3 4 5 6 7 8 9 10 11 12 13v Vector(3,4) v1 Vector(2,4) v2 Vector(2,1) print(abs(v)) print(v1v2) print(v*3) print(abs(v*3)) Output: 5.0 Vector(4, 5) Vector(9, 12) 15.0 这里使用运算符得到的结果也是一个向量abs函数是一个内置函数如果输入的是整数或者浮点数他返回的是输入值的绝对值如果输入的是复数那么返回这个复数的模。为了保持一致性我们的API在碰到abs函数的时候也应该返回该向量的模。 使用*运算符来实现向量的标量乘法即向量与数的乘法得到的结果向量的方向与原向量一致模变大接下来看看每个特殊方法的实现。 1.2.2 字符串表示形式 Python有一个内置的函数叫repr它能把一个对象用字符串的形式表达出来以便辩认这就是“字符串表示形式”。repr就是用过repr这个特殊方法来得到一个对象的字符串形式的。如果没有实现repr当我们在控制台打印一个向量的实例时得到的字符串可能会是。repr 交互式控制台和调试程序debugger用repr函数来获取字符串表示形式在老的使用%符号的字符串格式中这个函数返回的结果用来代替%r所代表的对象同样str.format函数所使用的新式字符串格式化语法也是利用了repr才!r字段变成字符串 在repr的实现中我们用到了%r来获取对象各个属性的标准字符串表示形式它暗示了一个关键Vector(1,2)和Vector(‘1’,’2’)是不一样的后者在我们的定义中会报错因为向量对象的构造函数只接受数值不接受字符串。 repr和str的区别在于后者是在str()函数被使用或是在用print函数打印一个对象的时候才被调用的并且它返回的字符串对终端用户更友好。%s对应于str()处理后的对象%r对应于repr()处理后的对象 1.2.3 算术运算符 通过add和mul示例1-2为向量类带来了和*这两个算术运算符这两个方法中的返回值都是新创建的向量对象被操作的两个向量self或other还是原封不动代码里只是读取了它们的值。中缀运算符的基本原则就是不改变操作对象而是产出一个新的值。 1.2.4 自定义的布尔值 为了判定一个值x为真还是为假Python会调用bool(x),这个函数只能返回True或者False。 默认情况下我们自己定义的类的实例总被认为是真的除非这个类对bool或者len函数有自己的实现。bool(x)的背后是调用bool()的结果如果不存在bool方法那么bool(x)会尝试调用x.len()。若返回0则bool会返回False否则返回True。 我们自己定义的类中bool方法的实现比较简单如果向量的模是0那么返回False其他情况返回True。 如果想让Vector.bool更高效可以采用这种实现1 2def __bool__(self): return bool(self.x or self.y) 因为只有横坐标和纵坐标同时为0时该向量模为0所以只要取两坐标的“或”值同时为0时才返回0 来代替abs到abs到平方再到平方根这些中间步骤。
http://www.pierceye.com/news/602974/

相关文章:

  • 沈阳市网站设计公司大全电商毕业设计作品
  • 做网站怎么赚钱滑县电桂林两江四湖景区导游词
  • 加快门户网站建设文网站建设费用计入什么科目
  • 网站建设合同英文模板下载湖州做网站的公司
  • 网站内容页设计济南网站优化
  • 简洁中文网站模板下载军事新闻头条最新消息
  • 湘潭网站建设 诚信磐石网络开发app软件的步骤
  • 阿里云网站备案网站建设方案书私有云可以建设网站
  • 网站建设如何增加流量做杂志的网站有哪些
  • 可信网站认证有用建设网站什么语言
  • 福州网站建设 大公司wordpress顺序
  • 为什么网站开发要用架构个人主页网站制作教程
  • 东莞教育网站建设做网站工资还没有文员高
  • 郑州网站制作工作室国内网站开发
  • 现在什么网站做外贸的最好wordpress window系统
  • 柬埔寨网赌网站开发新网络营销
  • html5毕业设计作品苏州关键词优化排名推广
  • 网站建设包括的内容相册在线设计平台
  • 花生壳可做网站吗微商城开发用华网天下首选
  • 口岸地区网站建设内容塔里木油田公司档案馆网站建设研究
  • 网站备案属于公司哪一块石家庄最新状况
  • 秦州建设网站免费代刷网站推广
  • 怎么查看一个网站是用什么程序做的我的家乡湛江网站设计
  • 沈阳网页模板建站开发手机app多少钱
  • 全国建设注册中心网站网页设计师培训价格
  • 做网站地图泰安百度公司代理商
  • 网站后台管理员密码汽车网站更新怎么做
  • 广东省网站备案查询怎么建设网站空间和备案
  • 企业网站软件下载红木家具网站模板
  • 如何创建网站步骤湖北网站制作公司的联系方式