无名阁,只为技术而生。流水不争先,争的是滔滔不绝。

(python封装) Python封装原理与实现方法详解 封装:Python中的四大基本概念之一 全网首发(图文详解1)

前沿技术 Micheal 4个月前 (06-02) 40次浏览 已收录 扫描二维码

(python封装) Python封装原理与实现方法详解

Python的封装是面向对象编程(OOP)的四大基本概念之一(其他三个是继承、多态和抽象)。封装的主要目的是隐藏对象的属性和行为实现细节,仅对外提供公共的访问方式。这样做的好处是可以在不影响外部调用的情况下,随时修改对象的内部实现。

1. 封装的实现方法

在Python中,封装通常通过以下两种方式实现:

  • 使用公共和私有访问修饰符:例如,以单下划线开头的属性或方法为保护成员,以双下划线开头的属性或方法为私有成员。
  • 使用属性装饰器@property装饰器可以将类的方法转变为只读属性,结合setter和deleter装饰器,可以设置属性的读取、赋值和删除行为。

2. 示例代码和解释

下面是一个简单的封装示例,涵盖了上述提到的两种实现方式。

class Student:
    def __init__(self, name, grade):
        self.name = name          # 公共属性
        self.__grade = grade      # 私有属性

    def display_info(self):
        print("Name:", self.name)
        # 在类的内部可以访问私有成员
        print("Grade:", self.__grade)

    @property
    def grade(self):
        return self.__grade       # 提供对私有属性的访问方法

    @grade.setter
    def grade(self, value):
        if 0 <= value <= 100:
            self.__grade = value  # 允许修改属性,但加入了条件
        else:
            print("Error: Invalid grade.")

# 使用类
student = Student("Alice", 90)
student.display_info()           # 可以访问公共方法

print(student.grade)             # 通过@property获得私有属性的值
student.grade = 95               # 修改私有属性,通过setter
print(student.grade)

# student.__grade                # 报错,无法直接访问私有属性

3. 详细解释

  • Student中有一个公共属性name和一个私有属性__grade
  • __grade属性为私有,意味着它不能直接从类的外部访问。而是通过公共方法display_info和属性装饰器@property提供的grade属性来间接访问。
  • @grade.setter装饰器允许外部代码修改私有__grade属性,但在赋值前进行了条件判断,保证了属性值的合法性。

通过封装,我们不仅隐藏了内部实现的细节,还通过接口提供安全的访问方式,使代码更加安全和易于维护。
(auth) Python 编码Basic Auth使用方法简单实例 Python编码 Basic Auth 使用方法简单实例 全网首发(图文详解1)
(object is not callable) Python报”TypeError: ‘dict’ object is not callable “的原因以及解决办法 错误通常意味着尝试像函数一样调用了一个字典对象:TypeError: ‘dict’ object is not callable 全网首发(图文详解1)

喜欢 (0)
[]
分享 (0)
关于作者:
流水不争先,争的是滔滔不绝