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

类的定义
假如要定义一个类 Point,表示二维的坐标点:
- # point.py
- class Point:
- def __init__(self, x=0, y=0):
- self.x, self.y = x, y
最最根本的就是 __init__ 办法,相当于 C++ / Java 的构造函数。带双下划线 __ 的办法都是特别办法,除了 __init__ 还有很多,后面会有介绍。
参数 self 相当于 C++ 的 this,表示当前实例,所有办法都有这个参数,然则调用时并不须要指定。
- >>> from point import *
- >>> p = Point(10, 10) # __init__ 被调用
- >>> type(p)
- <class 'point.Point'>
- >>> p.x, p.y
- (10, 10)
几乎所有的特别办法(包含 __init__)都是隐式调用的(不直接调用)。
对一切皆对象的 Python 来说,类本身当然也是对象:
- >>> type(Point)
- <class 'type'>
- >>> dir(Point)
- ['__class__', '__delattr__', '__dict__', ..., '__init__', ...]
- >>> Point.__class__
- <class 'type'>
Point 是 type 的一个实例,这和 p 是 Point 的一个实例是一回事。
现添加办法 set:
- class Point:
- ...
- def set(self, x, y):
- self.x, self.y = x, y
- >>> p = Point(10, 10)
- >>> p.set(0, 0)
- >>> p.x, p.y
- (0, 0)
p.set(...) 其实只是一个语法糖,你也可以写成 Point.set(p, ...),如许就能明显看出 p 就是 self 参数了:
- >>> Point.set(p, 0, 0)
- >>> p.x, p.y
- (0, 0)
值得留意的是,self 并不是关键字,甚至可以用其它名字替代,比如 this:
- class Point:
- ...
- def set(this, x, y):
推荐阅读
在这个语法树构造中,body里包含着if构造中的语句return HttpResponse("2"),type为Compare表示该构造体为断定语句,left表示左值即源码中的type,test构造体中则是用来进行if断定,test中的ops对应着>>>详细阅读
本文标题:浅析Python的类、继承和多态
地址:http://www.17bianji.com/lsqh/36335.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示