Python:类和实例

大数据学习路线图

【版权声明】博客内容由厦门大学数据库实验室拥有版权,未经允许,请勿转载!版权所有,侵权必究!
[返回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()是私有属性和私有方法,所以类的实例无法访问,只有类内部能访问。