跟Java和C++类似,Python也是一门面向对象的语言,接下来将介绍Python类和类的实例。
类
类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个实例所共有的属性和方法。
类定义的语法格式如下:
- class ClassName:
- 类的属性定义
- 类的方法
Python
类的属性
一般在类内部可以定义类的属性,如Person
类,通常会定义姓名name
,年龄age
等基础属性。定义方式与定义变量相同:var = ""
。
将属性名以双下划线开头可将属性定义为私有属性,如__privateattr = 0
,表示其只能在类内部访问以self.
的方式访问,类的实例(实例)无法访问。
类的方法
在类的内部,使用 def
关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数self
, 且为第一个参数,self
代表的是类的实例。
- def function(self):
- 方法体
Python
与私有属性同理,将方法名以双下划线开头可将方法定义为私有方法,如def __func(self):
,表示表示其只能在类内部访问以self.
的方式访问,类的实例(实例)无法访问。
一般创建实例的同时需要初始化实例,因此一般都会为类定义一个构造方法名为__init__()
,同样也是第一个参数必须为self
,在创建类的实例时,会自动调用该构造方法。
如:
- def __init__(self,name):
- self.name = name
Python
类的实例
Python创建类的实例语法格式为:
- object = ClassName(argu1,argu2,...)
Python
下面以定义矩形类为例,来介绍类的使用。
- class Rectangle :
- #定义类的属性
- width = 0
- height = 0
- #定义类的私有属性
- __color = ""
- #定义构造函数
- def __init__(self,width,height,color):
- self.width = width
- self.height = height
- self.__color = color
- #定义类的私有方法。获取矩形的面积
- def __getArea(self):
- return self.width * self.height
- #定义类的方法。打印此矩阵的长宽面积
- #类内部可调用类的私有属性和私有方法
- def printme(self):
- print("width = %d,height = %d,area = %d,color = %s" % (self.width,self.height,self.__getArea(),self.__color))
- #创建类的实例,自动调用__init__()构造方法
- R = Rectangle(3,4,"blue")
- #访问实例的属性
- print("width =",R.width)
- #访问实例的方法
- R.printme()
- #访问实例的私有属性和私有方法。
- #这里会报错,因为实例无法访问类的私有属性和私有方法
- print("color = %s, Area = %d " % (R.__color,R.__getArea()))
Python
将上述代码写入Rectangle.py文件中,利用命令python3.5 Rectangle.py
执行代码,输出结果为:
width = 3
width = 3,height = 4,area = 12,color = blue
Traceback (most recent call last):
File "Rectangle.py", line 28, in <module>
print("color = %s, Area = %d " % (R.__color,R.__getArea()))
AttributeError: 'Rectangle' object has no attribute '__color'
因为__color
和__getArea()
是私有属性和私有方法,所以类的实例无法访问,只有类内部能访问。