1、封装的理解
封装(Encapsulation):属性和方法的抽象
属性的抽象:对类的属性(变量)进行定义、隔离和保护
分为私有属性和公开属性:
- 私有属性:只能在类内部访问
- 公开属性:可以通过类、对象名访问
可以选择公开或隐藏属性,隐藏属性的内在机理
方法的抽象:对类的方法(函数)进行定义、隔离和保护
分为私有方法和公开方法:
- 私有方法:只能在类内部访问
- 公开方法:可以通过类、对象名访问
可以选择公开或隐藏方法,隐藏方法的内部逻辑
- 目标是形成一个对外可操作属性和方法的接口
封装就是让数据和代码称为类的过程,表达为:类――属性――方法
2、私有类属性、公开类属性、私有实例属性和公开实例属性
2.1 公开类属性
公开类属性就是类属性,语法结构
class ClassName: <类属性名> = <类属性初值> def __init__(self,[参数1], [参数2], ...[参数n]): self.<实例属性名> = <实例属性初值> ...
2.2 私有类属性
私有类属性只能当前类进行访问,子类不能访问。语法结构
class ClassName: <strong style="color:transparent">本文来源gao@daima#com搞(%代@#码网@</strong> <__私有类属性名> = <私有类属性初值> def __init__(self,[参数1], [参数2], ...[参数n]): self.<实例属性名> = <实例属性初值> ...
.<类属性>
或者<对象名>.<类属性>
的方式访问
有效保证了属性维护的可控性
示例代码如下:
class TestClass: __number = 0 def __init__(self, num_value): for i in range(num_value + 1): TestClass.__number += i @classmethod # 类方法 def sum_number(cls): return TestClass.__number value1 = TestClass(100) print(TestClass.sum_number()) # 5050 # print(value1.__number) # AttributeError: 'TestClass' object has no attribute '__number'