python是如何实现封装的

图片[1]-python是如何实现封装的-uusu优素-乐高,模型,3d打印,编程

封装的目的是,保护隐私,把不想让别人知道的东西封装起来。下面通过例子来理解封装

定义了Student类及实例化,每个实例都拥有各自的name和score。现在若需要打印一个学生的成绩,可定义函数 print_score(),该函数为类外的函数。

classStudent(object):
def__init__(self,name,score):
self.name=name
self.score=score
May=Student("May",90)#须要提供两个属性
Peter=Student("Peter",85)
print(May.name,May.score)
print(Peter.name,Peter.score)
defprint_score(Student):#外部函数print_score(Student)
#print("%s'sscoreis:%d"%(Student.name,Student.score))#普通print写法
print("{0}'sscoreis:{1}".format(Student.name,Student.score))#建议使用Python2.7+.format优化写法
print_score(May)
print_score(Peter)

既然Student实例本身就拥有这些数据,要访问这些数据,就没有必要从外面的函数去访问,我们可以直接在Student类的内部定义访问数据的函数。这样,就把数据给“封装”起来了。

“封装”就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体(即类);封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的访问权限来使用类的成员。

而这些封装数据的函数是和Student类本身是关联起来的,我们称之为类的方法。那如何定义类的方法呢?

就要用到对象 self 本身,参考上例,把 print_score() 函数写为类的方法(Python2.7之后的版本,推荐.format 输出写法):

classStudent(object):
def__init__(self,name,score):
self.name=name
self.score=score
defprint_score(self):
print("{self.name}'sscoreis:{self.score}".format(self=self))#Python2.7+.format优化写法

May=Student("May",90)
Peter=Student("Peter",85)

定义类的方法:除了第一个参数是self外,其他和普通函数一样。

实例调用方法:只需要在实例变量上直接调用,除了self不用传递,其他参数正常传入;注意,若类的方法仅需要self,不需要其他,调用该方法时,仅需instance_name.function_name()

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

classStudent(object):
def__init__(self,name,score):
self.name=name
self.score=score
defprint_score(self):
print("{self.name}'sscoreis:{self.score}".format(self=self))#Python2.7+.format优化写法

defcompare(self,s):
ifself.score>s:
print("betterthan%d"%(s))
elifself.score==s:
print("equal%d"%(s))
else:
print("lowerthan%d"%(s))
May=Student("May",90)
Peter=Student("Peter",85)
May.print_score()
Peter.print_score()
May.compare(100)
May.compare(90)
May.compare(89)
原文来自:https://www.py.cn
© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容