珠海品牌网站制作服务物流企业的网站模板
news/
2025/9/23 8:26:49/
文章来源:
珠海品牌网站制作服务,物流企业的网站模板,买了个区域名怎么做网站,ui设计一个页面多少钱Python 类的封装 承接上一节#xff0c;学了Student类的定义及实例化#xff0c;每个实例都拥有各自的name和score。现在若需要打印一个学生的成绩#xff0c;可定义函数 print_score() 该函数为类外的函数#xff0c;如下#xff1a; 1 class Student(object):2 def …Python 类的封装 承接上一节学了Student类的定义及实例化每个实例都拥有各自的name和score。现在若需要打印一个学生的成绩可定义函数 print_score() 该函数为类外的函数如下 1 class Student(object):2 def __init__(self, name, score):3 self.name name4 self.score score5 6 May Student(May,90) # 须要提供两个属性7 Peter Student(Peter,85)8 print(May.name, May.score)9 print(Peter.name, Peter.score)
10
11 def print_score(Student): # 外部函数print_score(Student)
12 # print(%ss score is: %d %(Student.name,Student.score)) # 普通 print 写法
13 print({0}s score is: {1}.format(Student.name,Student.score)) # 建议使用 Python 2.7 .format优化写法
14 print_score(May)
15 print_score(Peter) 既然Student实例本身就拥有这些数据要访问这些数据就没有必要从外面的函数去访问我们可以直接在Student类的内部定义访问数据的函数。这样就把数据给“封装”起来了。 “封装”就是将抽象得到的数据和行为或功能相结合形成一个有机的整体即类封装的目的是增强安全性和简化编程使用者不必了解具体的实现细节而只是要通过外部接口一特定的访问权限来使用类的成员。 而这些封装数据的函数是和Student类本身是关联起来的我们称之为类的方法。那如何定义类的方法呢 就要用到对象 self 本身参考上例把 print_score() 函数写为类的方法Python2.7之后的版本推荐.format 输出写法 1 class Student(object):2 def __init__(self, name, score): 3 self.name name4 self.score score5 6 def print_score(self):7 print({self.name}s score is: {self.score}.format(selfself)) # Python 2.7 .format优化写法8 9 May Student(May,90)
10 Peter Student(Peter,85) 定义类的方法除了第一个参数是self外其他和普通函数一样。 实例调用方法只需要在实例变量上直接调用除了self不用传递其他参数正常传入注意若类的方法仅需要self不需要其他调用该方法时仅需 instance_name.function_name() 这样一来我们从外部看Student类就只需要知道创建实例需要给出name和score而如何打印都是在Student类的内部定义的这些数据和逻辑被“封装”起来了调用很容易但却不用知道内部实现的细节。 封装的另一个好处是可以给Student类增加新的方法这边的方法也可以要求传参如新增定义compare 函数如下 1 class Student(object):2 def __init__(self, name, score): 3 self.name name4 self.score score5 6 def print_score(self):7 print({self.name}s score is: {self.score}.format(selfself)) # Python 2.7 .format优化写法8 9 def compare(self,s):
10 if self.scores:
11 print(better than %d %(s))
12 elif self.scores:
13 print(equal %d %(s))
14 else:
15 print(lower than %d %(s))
16
17 May Student(May,90)
18 Peter Student(Peter,85)
19
20 May.print_score()
21 Peter.print_score()
22
23 May.compare(100)
24 May.compare(90)
25 May.compare(89) 转载于:https://www.cnblogs.com/feeland/p/4415645.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/911902.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!