Python 面向对象编程 一 数据和方法封装
python 面向对象的原则
OOP是一种将属性和行为捆绑到一个实体中的方法,我们称之为对象。为了使这种捆绑更加高效和模块化,Python中有几个原则,概述如下:
- 数据封装
- 继承
- 多态性
- 抽象
接下来,我们将详细讲解这此原则。
数据和行为封装
封装是面向对象编程中的一个基本概念,有时也被称为抽象。但实际上,封装不仅仅是抽象。在面向对象编程中,将数据和与数据相关的操作捆绑到一个单元中称为封装。封装实际上不仅仅是捆绑数据和相关操作。我们可以在这里列举封装的三个主要目标,如下所示:
- 将数据和相关操作包含在一个单元中。
- 隐藏对象的内部结构和实现细节。
- 限制对对象某些组件(属性或方法)的访问。
封装简化了对象的使用,而不知道如何实现的内部细节,它还有助于控制对象状态的更新。
在接下来的内容中,我们将详细讨论这些目标。
把数据和行为包装起来
我们在类中定义属性和方法。Python中的类可以有以下类型的元素:
- 构造函数和析构函数
- 类方法和属性
- 实例方法和属性
- 嵌套类
除了嵌套类外,我在之前的文章中已写过其它些内容。下面我写一下嵌套类,现在来为 小汽车类
定义一个发动机
类,定义在小汽车类
内部:
class 小汽车类:
""" 外部类 """
质量标准 = "国家质量标准"
def __init__(我, 颜色, 品牌, 发动机排量):
我.颜色 = 颜色
我.品牌 = 品牌
我.发动机 = 我.发动机类(发动机排量)
def 打印_颜色(我):
print(f"小汽车的颜色是:{
我.颜色}")
def 打印_品牌(我):
print(f"小汽车的品牌是:{
我.品牌}")
def __str__(我):
return f"我是一个小汽车,依呀依呀哟。我的颜色是{
我.颜色},我的品牌是{
我.品牌},我的发动机排量是{
我.发动机.排量}, 我执行的质量标准是{
我.质量标准}。"
@classmethod
def 打印_质量标准(我之类):
print(f"我之质量标准:{
我之类.质量标准}")
print(f"我之类名字是:{
我之类.__name__}")
@staticmethod
def 打印_你好():
print("哇哦,这是一个来自于静态方法的问候")
class 发动机类:
""" 内部类 """
def __init__(我, 排量):
我.排量 = 排量
def __str__(我):
return f"我的排量是{
我.排量}"
if __name__ == "__main__":
小汽车 = 小汽车类("白色", "国威", "1000L")
print(小汽车)
在这个例子中,我们在常规小汽车类
类中定义了一个发动机类
内部类。发动机类
类只有一个属性——