作家
登录

浅析Python的类、继承和多态

作者: 来源: 2017-07-21 10:33:21 阅读 我要评论

【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路!

浅析Python的类、持续和多态

类的定义

假如要定义一个类 Point,表示二维的坐标点:

  1. # point.py 
  2.  
  3. class Point: 
  4.  
  5.     def __init__(self, x=0, y=0): 
  6.  
  7.         self.x, self.y = x, y  

最最根本的就是 __init__ 办法,相当于 C++ / Java 的构造函数。带双下划线 __ 的办法都是特别办法,除了 __init__ 还有很多,后面会有介绍。

参数 self 相当于 C++ 的 this,表示当前实例,所有办法都有这个参数,然则调用时并不须要指定。

  1. >>> from point import * 
  2.  
  3. >>> p = Point(10, 10) # __init__ 被调用 
  4.  
  5. >>> type(p) 
  6.  
  7. <class 'point.Point'
  8.  
  9. >>> p.x, p.y 
  10.  
  11. (10, 10)  

几乎所有的特别办法(包含 __init__)都是隐式调用的(不直接调用)。

对一切皆对象的 Python 来说,类本身当然也是对象:

  1. >>> type(Point) 
  2.  
  3. <class 'type'
  4.  
  5. >>> dir(Point) 
  6.  
  7. ['__class__''__delattr__''__dict__', ..., '__init__', ...] 
  8.  
  9. >>> Point.__class__ 
  10.  
  11. <class 'type' 

Point 是 type 的一个实例,这和 p 是 Point 的一个实例是一回事。

现添加办法 set:

  1. class Point: 
  2.  
  3.     ... 
  4.  
  5.     def set(self, x, y): 
  6.  
  7.         self.x, self.y = x, y  
  1. >>> p = Point(10, 10) 
  2.  
  3. >>> p.set(0, 0) 
  4.  
  5. >>> p.x, p.y 
  6.  
  7. (0, 0)  

p.set(...) 其实只是一个语法糖,你也可以写成 Point.set(p, ...),如许就能明显看出 p 就是 self 参数了:

  1. >>> Point.set(p, 0, 0) 
  2.  
  3. >>> p.x, p.y 
  4.  
  5. (0, 0)  

值得留意的是,self 并不是关键字,甚至可以用其它名字替代,比如 this:

  1. class Point: 
  2.  
  3. ... 
  4.  
  5. def set(this, x, y): 
  6.  
     1/5    1 2 3 4 5 下一页 尾页

      推荐阅读

      【干货】Python自动化审计及实现

    在这个语法树构造中,body里包含着if构造中的语句return HttpResponse("2"),type为Compare表示该构造体为断定语句,left表示左值即源码中的type,test构造体中则是用来进行if断定,test中的ops对应着>>>详细阅读


    本文标题:浅析Python的类、继承和多态

    地址:http://www.17bianji.com/lsqh/36335.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)