Python 官方文档:入门教程 => 点击学习
目录1、封装的理解2、私有类属性、公开类属性、私有实例属性和公开实例属性2.1 公开类属性2.2 私有类属性2.3 公开实例属性2.4 私有实例属性2.5 私有属性不一定真的私有3、
封装(Encapsulation):属性和方法的抽象
属性的抽象:对类的属性(变量)进行定义、隔离和保护
分为私有属性和公开属性:
可以选择公开或隐藏属性,隐藏属性的内在机理
方法的抽象:对类的方法(函数)进行定义、隔离和保护
分为私有方法和公开方法:
可以选择公开或隐藏方法,隐藏方法的内部逻辑
封装就是让数据和代码称为类的过程,表达为:类——属性——方法
公开类属性就是类属性,语法结构
class ClassName:
<类属性名> = <类属性初值>
def __init__(self,[参数1], [参数2], ...[参数n]):
self.<实例属性名> = <实例属性初值>
...
私有类属性只能当前类进行访问,子类不能访问。语法结构
class ClassName:
<__私有类属性名> = <私有类属性初值>
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'
在类外卖访问.__number
就会报出AttributeError
异常
公开实例属性就等于示例属性,语法结构
class <类名>:
<类属性名> = <类方法值>
def __init__(self, <参数列表>):
self.<实例属性名> = <实例属性值>
...
私有实例属性只能在当前类内部使用,子类也不能使用。语法结构
class <类名>:
<类属性名> = <类方法值>
def __init__(self, <参数列表>):
self.<__私有实例属性名> = <实例属性值>
...
.<类属性>
或者<对象名>.<类属性>
的方式访问
有效保证了属性维护的可控性
示例代码:
class TestClass:
def __init__(self, num_value):
self.__number = 0
for i in range(num_value + 1):
self.__number += i
def sum_number(self):
return self.__number
value1 = TestClass(100)
print(value1.sum_number()) # 5050
# print(value1.__number) # AttributeError: 'TestClass' object has no attribute '__number'
私有属性的双下划线只是一种转换约定,转换后,类内原有名字发生了变化,这是一种形式上的私有
示例代码:
class TestClass:
def __init__(self, num_value):
self.__number = 0
for i in range(num_value + 1):
self.__number += i
def sum_number(self):
return self.__number
value1 = TestClass(100)
print(value1.sum_number()) # 5050
print(value1._TestClass__number) # 5050
# 可以通过 对象名._类名__属性 的方式来访问
可以通过对象名._类名__属性的方式来访问。
定义方法是在类内部定义并使用的方法。语法结构
class <类名>:
def <__私有方法名>(self, <参数列表>):
...
私有方法定义的时候属性名字前面需要两个下划线( __
).
各类方法都可以通过增加双下换线的方式将方法变为私有方法
私有方法在形式上保护了python
类内部使用的函数逻辑
Python
解释器预留的类属性,以双下换线开头或者结尾。
Python
类提供了统一的属性接口仅用<类名>
访问的保留属性
保留属性 | 描述 |
---|---|
__name__ | 类的名词 |
__qualname__ | 以.分隔从模板全局命名空间开始的类名称 |
__bases__ | 类所继承的基类名称 |
保留方法是Python
解释器预留的方法,以双下划线开头和结尾
Python
类提供了统一的方法接口到此这篇关于Python面向对象编程之类的封装的文章就介绍到这了,更多相关Python类的封装内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Python面向对象编程之类的封装
本文链接: https://lsjlt.com/news/156060.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0