S1.6 封装

引入:面向对象编程的三大特性

面向对象编程,是许多编程语言都支持的一种编程思想。

简单理解就是:基于模板(类)去创建实体(对象),使用对象完成功能开发。

面向对象编程包含3大主要特性:

  • 封装
  • 继承
  • 多态

本小节将围绕封装展开讲解。

正片开始

封装

封装表示的是将现实世界事物的:

  • 属性
  • 行为

封装到类中,描述为:

  • 成员变量
  • 成员方法

从而完成程序对现实世界事物的描述。

对用户隐藏的属性和行为

现实世界中的事物,有属性和行为。

但不代表这些属性和行为都是开放给用户使用的。

以手机为例:

私有成员

类中也提供了类似的方法来隐藏部分不对用户公开的成员,称之为定义 私有成员

  • 私有成员变量:变量名以__开头(2个下划线)
  • 私有成员方法:方法名以__开头(2个下划线)

QuickStart:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
class Phone:
    IMEI = None			# 序列号
    producer = None		# 厂商

    __current_voltage = None	# 当前电压(私有成员变量)

    def call_by_5g(self):
        print("5g通话已开启")

    def __keep_single_core(self):	# 私有成员方法
        print("让CPU以单核模式运行以节省电量")
phone1 = Phone()
print(phone1.__current_voltage)	# 报错
phone1.__keep_single_core()		# 也会报错

私有成员虽然无法直接被类对象使用,但是可以被其他的成员使用。

例如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
class Phone:
    def __init__(self,__current_voltage):
        self.__current_voltage = __current_voltage	# 当前电压(私有成员变量)
    def __keep_single_core(self):	# 私有成员方法
        print("让CPU以单核模式运行以节省电量")
    def call_by_5g(self):
        if self.__current_voltage >= 5:
            print("5g通话已开启")
        else:
            self.__keep_single_core()
            print('电量不足,无法使用5g通话,并已设置为单核运行进行省电。')
phone1 = Phone(22)
phone1.call_by_5g()
phone2 = Phone(3)
phone2.call_by_5g()

可以看到此处除了call_by_5g的普通方法访问了私有方法,还通过__init__定义了私有方法的值,更是印证了上面那点。

Licensed under CC BY-NC-SA 4.0
已存在于互联网
发表了126篇文章 · 总计210.25k字
萌ICP备20267077号
Powered by ctOS