python中类的使用案例

  介绍

这篇文章将为大家详细讲解有关python中类的使用案例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

面向对象最重要的概念就是类(类)和实例(实例),必须牢记类是抽象的模板,比如学生类,而实例是根据类创建出来的一个个具体的对“象”,每个对象都拥有相同的方法,但各自的数据可能不同。

仍以学生类为例,在python中,定义类是通过类关键字:

class 学生(对象):   ,,,通过

类后面紧接着是类名,即学生,类名通常是大写开头的单词,紧接着是(对象),表示该类是从哪个类继承下来的,继承的概念我们后面再讲,通常,如果没有合适的继承类,就使用对象类,这是所有类最终都会继承的类。

定义好了学生类,就可以根据学生类创建出学生的实例,创建实例是通过类名+()实现的:

在祝辞祝辞,bart =,学生()   在祝辞祝辞巴特   & lt; __main__.Student  object  at  0 x10a67a590>   在在在学生   & lt; class  & # 39; __main__.Student& # 39;在

可以看的到,变量巴特指向的就是一个学生的对象,后面的0 x10a67a590是内存地址,每个对象的地址都不一样,而学生本身则是一个类。

可以自由地给一个实例变量绑定属性,比如,给实例巴特绑定一个名字属性:

在祝辞祝辞,bart.name =, & # 39; Bart 辛普森# 39;   在祝辞祝辞bart.name   & # 39;Bart 辛普森# 39;

由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。通过定义一个特殊的__init__方法,在创建实例的时候,就把名字,分数等属性绑上去:

class 学生(对象):   ,,,def  __init__(自我,,名字,,分数):   ,,,,,,,self.name =,名字   ,,,,,,,self.score =,得分

注意到__init__方法的第一个参数永远是自我,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到自我,因为自我就指向创建的实例本身。

有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但自己不需要传,Python解释器自己会把实例变量传进去:

在祝辞祝辞,bart =,学生(& # 39;bart 辛普森# 39;,,59)   在祝辞祝辞bart.name   & # 39;Bart 辛普森# 39;   在祝辞祝辞bart.score   59

和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量自我,并且,调用时,不用传递该参数。除此之外,类的方法和普通函数没有什么区别,所以,你仍然可以用默认参数,可变参数和关键字参数。

<强>数据封装

面向对象编程的一个重要特点就是数据封装。在上面类的学生中,每个实例就拥有各自的名字和分数这些数据。我们可以通过函数来访问这些数据,比如打印一个学生的成绩:

在祝辞祝辞,def  print_score (std):   ,,,,,,print  & # 39; % s:, % & # 39;, %, (std.name, std.score)   …   在祝辞祝辞,print_score (bart)   Bart 辛普森:59

但是,既然学生实例本身就拥有这些数据,要访问这些数据,就没有必要从外面的函数去访问,可以直接在学生类的内部定义访问数据的函数,这样,就把“数据”给封装起来了。这些封装数据的函数是和学生类本身是关联起来的,我们称之为类的方法:

class 学生(对象):   ,,,def  __init__(自我,,名字,,分数):   ,,,,,,,self.name =,名字   ,,,,,,,self.score =,得分   ,,,def  print_score(自我):   ,,,,,,,print  & # 39; % s:, % & # 39;, %, (self.name, self.score)

要定义一个方法,除了第一个参数是自我外,其他和普通函数一样。要调用一个方法,只需要在实例变量上直接调用,除自我不了用传递,其他参数正常传入:

在祝辞祝辞,bart.print_score ()   Bart 辛普森:59

这样一来,我们从外部看学生类,就只需要知道,创建实例需要给出名字和分数,而如何打印,都是在学生类的内部定义的,这些数据和逻辑被“封装”起来了,调用很容易,但却不用知道内部实现的细节。

封装的另一个好处是可以给学生类增加新的方法,比如get_grade:

class 学生(对象):   ,,,…   ,,,def  get_grade(自我):   ,,,,,,,if  self.score 祝辞=,90:   ,,,,,,,,,,,return  & # 39;一个# 39;   ,,,,,,,elif  self.score 祝辞=,60:   ,,,,,,,,,,,return  & # 39; b # 39;   ,,,,,,,其他的:   ,,,,,,,,,,,return  & # 39; c # 39;

python中类的使用案例