Python面向对象之五:封装和多态
python面向对象的三大特性:继承(已学习),封装,多态。
一、封装
封装是隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读取和修改的访问级别。
封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。
1、简单理解封装
顾名思义,封装属性就是把已有的属性封装到一个类里面去:
class Person():
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
jack = Person('jack', 18, '男')
#将jack、 18、 男 封装到jack对象(self)的name、age、sex中
#name、age、sex又封装在了Person类中
print(jack.__dict__)
#{'name': 'jack', 'age': 18, 'sex': '男'}
分析:self是一个形式参数,创建什么对象,它就代表那个对象
2、调用封装的属性
通过对象直接调用:
class Person():
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
jack = Person('jack', 18, '男')
print(jack.name, jack.sex, jack.age)
#jack 男 18
分析:在这里,我们可以用对象名随意调用到自身的属性,并进行属性修改,从安全的角度来看,这样是很不安全的,所以需要将属性隐藏起来,也就是私有化。
私有化属性的方法:类中定义私有的,只有类内部使用,外部无法访问(比如_(杠) __(杠杠) )
class Person():
def __init__(self, name, age, sex):
self.__name = name
self.__age = age
self.__sex = sex
jack = Person