【版权声明】博客内容由厦门大学数据库实验室拥有版权,未经允许,请勿转载!版权所有,侵权必究!
[返回Python教程首页]
跟Java和C++类似,Python也是一门面向对象的语言,接下来将介绍Python类和类的实例。
类
类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个实例所共有的属性和方法。
类定义的语法格式如下:
class ClassName:
类的属性定义
类的方法
类的属性
一般在类内部可以定义类的属性,如Person
类,通常会定义姓名name
,年龄age
等基础属性。定义方式与定义变量相同:var = ""
。
将属性名以双下划线开头可将属性定义为私有属性,如__privateattr = 0
,表示其只能在类内部访问以self.
的方式访问,类的实例(实例)无法访问。
类的方法
在类的内部,使用 def
关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数self
, 且为第一个参数,self
代表的是类的实例。
def function(self):
方法体
与私有属性同理,将方法名以双下划线开头可将方法定义为私有方法,如def __func(self):
,表示表示其只能在类内部访问以self.
的方式访问,类的实例(实例)无法访问。
一般创建实例的同时需要初始化实例,因此一般都会为类定义一个构造方法名为__init__()
,同样也是第一个参数必须为self
,在创建类的实例时,会自动调用该构造方法。
如:
def __init__(self,name):
self.name = name
类的实例
Python创建类的实例语法格式为:
object = ClassName(argu1,argu2,...)
下面以定义矩形类为例,来介绍类的使用。
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()))
将上述代码写入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()
是私有属性和私有方法,所以类的实例无法访问,只有类内部能访问。