第二十九章、面向对象(高级)

知识点回顾

什么是封装

封装是指将数据(属性)和操作数据的行为(方法)封装在类中,并控制外部对内部数据的访问权限,让用户通过特定的方法才能操作这些对象。

封装的目的

封装的方法

class Human:
     pass

h1 = Human()
h1.age = 18
class Human:
    def __init__(self, n, a):
        self.__name, self.__age = n, a

h1 = Human()
h1.__age = 18  # 报错

1. __slots__列表

作用:

限定每一个对象只能有固定的属性,防止动态添加属性。

优化内存,提高访问速度。

说明:

__slots__ 属性是类属性,他是一个列表,列表的值是字符串(属性名称)。

含有 __slots__ 属性的类所创建的实例对象没有 __dict__ 属性,即此实例不用字典来存储对象的属性(实例属性) 。

示例

# __slots__ 列表 示例

class Human:
    __slots__ = ['name', 'age']
    def __init__(self, n, a):
        self.name, self.age = n, a

s1 = Human('小张', 18)
s1.score = 100  # 添加额外的属性报错
print(s1.__dict__)  # s1也没有 __dict__属性