前言
Python面向对象编程语言,有List、Str、Dict、Tuple等数据类型,这些数据类型也是对象,比如List类可以有count方法,我们可以通过count方法统计列表中各个元素的数量。
我们可以简单的将定义类理解成就是定义数据结构,同时给这种数据结构制定一些独特的属性或者方法。我们先看最简单的类,在这里我们定义了Point类
#为了显示多个调用的变量
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = 'all'
class Point(object):
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def String(self):
#显示Point的信息
return "{X:" + str(self.x) + ", Y:" + str(self.y) + "}"
调用类之前我们要实例化,这个可以理解成神笔马良画的画,如果不将其搞活,永远是画。通过实例化,调用实例,画中对象就活了。
#实例化Point类
point = Point(x=3, y=4)
#显示point对象
point
#显示point的String方法
point.String()
代码运行结果
<__main__.Point at 0x10d98ec18>
'{X:3, Y:4}'
小编推荐一个学python的学习qun 740,3222,34
无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
单继承
只是继承了 一个 基类 。现在我们定义一个Circle类, 圆是由圆心和半径决定的,所以Circle会继承并使用Point的一些特性。
class Circle(Point):
def __init__(self, x=0, y=0, radius=0):
#Circle继承并使用Point的__init__函数
Point.__init__(self, x, y)
#不同于Point的参数radius
self.radius = radius
def String(self):
#显示Circle的信息
return Point.String(self) + ", {Radius:" + str(self.radius) + "}"
现在我们看看Circle
#实例化Circle类
circle = Circle(x=3, y=2, radius=5)
#显示circle对象信息
circle
#显示circle的String方法
circle.String()
代码运行结果
<__main__.Circle at 0x10d911c18>
'{X:3, Y:2}, {Radius:5}'
多继承
多继承,顾名思义就是某个类继承了多个父类(基类)
class Size(object):
def __init__(self, width, height):
self.width = width
self.height = height
def String(self):
return "{Width: " + str(self.width) + ", Height: " + str(self.height) + "}"
继续
#实例化Size对象
size = Size(width=5, height=3)
size
size.String()
运行结果
<__main__.Size at 0x10d97e828>
'{Width: 5, Height: 3}'
现在已经有了Point、Size类,以及每个类中的String()方法。现在想构建 正四方形Rectangle类。为了让Rectangle具有Point和Size的一些特性,需要让Rectangle继承Point和Size的一些特有的方法。
class Rectangle(Point, Size):
def __init__(self, x, y, width, height):
#让Rectangle使用Point中的init方法,使得Rectangle本身含有x和y属性值
Point.__init__(self, x, y)
#让Rectangle使用Size中的init方法,使得Size本身含有width和height属性值
Size.__init__(self, width, height)
def String(self):
return "Rectangle's init point is " + Point.String(self) + "; Size is " + Size.String(self)
Rectangle 继承了 Point 和 Size 两个类,使得Rectangle不用定义 x、y、width、height。而且 Rectangle的String方法 可以直接调用 Point和Size对象的String方法。
#实例化Rectangle
rect = Rectangle(x=0,
y=0,
width=5,
height=3)
#调用rect
rect
#显示其方法
rect.String()
运行结果
<__main__.Rectangle at 0x10d978390>
"Rectangle's init point is {X:0, Y:0}; Size is {Width: 5, Height: 3}"
网友评论