zoukankan      html  css  js  c++  java
  • 类的封装

    #前面了解了Python对象中两个重点:继承和多态,接下来了解第三个重点:多态
    #封装食全局作用域中其他区域隐藏多余信息的原则。看起来有些像多态,使用对象而不用知道内部细节。他们都是抽象原则,都会帮忙处理程序组件而不用过多关系细节,就像函数一样。
    #封装并不等于多态。多态可以让用户对不知道类(或者对象类型)的对象进行方法调用,而封装可以不用关心对象是如何构建的,直接使用即可。
    #如前面定义的Student类中,每个实例都拥有各自的name和score数据。我们可以通过函数访问这些数据,如输出学生的成绩,可以如下定义并执行:
     1 #! /usr/bin/python3
     2 #-*-coding:UTF-8-*-
     3 #封装
     4  
     5 class Student(object):
     6     def __init__(self,name,score):
     7         self.name=name
     8         self.score=score
     9 
    10 stu=Student('xiaoming',96)
    11 def info(stu):
    12     print('学生:%s;分数:%s'%(stu.name,stu.score))
    13 info(stu)
    #执行结果如下:
    D:Pythonworkspace>python class_封装.py
    学生:xiaoming;分数:96
    #由输出结果看到,可以通过函数调用类并得到结果。
    #既然Student实例本身就拥有这些数据,要访问这些数据就没有必要从外面的函数访问,可以直接在Student类内部定义访问数据,这样就把“数据”封装起来了。这些封装数据的函数和Student类本身是相关联的,我们称之为类的方法。于是就有了前面所写类的形式:
     1 #! /usr/bin/python3
     2 #-*-coding:UTF-8-*-
     3 #封装
     4 
     5 class Student0(object):
     6     def __init__(self,name,score):
     7         self.name=name
     8         self.score=score
     9 
    10     def info(self):
    11         print('学生:%s;分数:%s'%(self.name,self.score))
    #要定义一个方法,除了第一个参数是self外,其他参数和普通函数一样。要调用一个方法,在实例变量上直接调用即可。除了self不用传递,其他参数正常传入,执行如下语句:
    1 stu=Student0('xiaoming',96)
    #执行结果如下:
    1 D:Pythonworkspace>python Class_封装.py
    2 学生:xiaming;分数:96
    #这样一来,我们从外部看Student类,只需知道创建实例需要给出的name和score,如何输出是在Student类的内部定义的,这些数据和逻辑被“封装”起来了,调用很容易,却不用知道内部实现的细节。
    #封装的另一个好处是可以给Student类增加新方法,比如我们在类的访问权限中所讲到的get_score()方法和set_score()方法。使用这些方法,我们无需知道内部实现细节,直接调用即可。
  • 相关阅读:
    Angular Universal 学习笔记
    SAP Spartacus 如何获得当前渲染页面的 CMS 元数据
    Angular 服务器端渲染的学习笔记(二)
    Angular 服务器端渲染的学习笔记(一)
    第三方外部 Saas提供商如何跟使用 SAP 系统的客户进行对接接口集成
    如何从 SAP Spartacus Product Detail 页面,找到其 Angular 实现 Component 的位置
    具备自动刷新功能的 SAP ABAP ALV 报表
    C++学习目录
    c--条件编译
    c--文件读写--二进制
  • 原文地址:https://www.cnblogs.com/DLHe/p/8016972.html
Copyright © 2011-2022 走看看