前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python面向对象编程-三大特性-封装

Python面向对象编程-三大特性-封装

原创
作者头像
玖叁叁
发布2023-04-19 07:29:28
2530
发布2023-04-19 07:29:28
举报
文章被收录于专栏:玖叁叁

封装是面向对象编程中的三大特性之一,它是指将数据和行为组合在一个单元中,将数据和行为尽可能地隐藏在对象中,并对外部提供公共接口来访问这些数据和行为。封装的目的是实现对象的信息隐藏,使对象的内部实现对外部不可见,从而提高了对象的安全性和可靠性,同时也方便了对象的使用。

在Python中,封装主要通过访问限制和属性来实现。Python的访问限制有两种,分别是公有访问和私有访问。公有访问是指对象的属性和方法可以被外部访问,私有访问是指对象的属性和方法只能在对象内部被访问。

Python中使用下划线来表示属性的访问权限,其中单下划线表示属性是受保护的,即只能在类内部和子类中被访问,而双下划线表示属性是私有的,即只能在类内部被访问。除了使用下划线来表示访问权限之外,Python还提供了属性访问器来控制属性的访问权限。

属性访问器包括getter和setter方法,用于获取和设置属性的值。通过使用属性访问器,我们可以控制属性的访问权限,从而实现数据的封装。在Python中,getter方法使用@property装饰器来定义,setter方法使用@方法名.setter装饰器来定义。

以下是一个示例代码,演示了如何在Python中实现封装:

代码语言:javascript
复制
class Person:
    def __init__(self, name, age):
        self._name = name  # 受保护的属性
        self.__age = age  # 私有属性

    @property
    def name(self):
        return self._name

    @name.setter
    def name(self, name):
        self._name = name

    def get_age(self):
        return self.__age

    def set_age(self, age):
        self.__age = age

person = Person("Tom", 20)
print(person.name)  # Tom
person.name = "Jerry"
print(person.name)  # Jerry
print(person.get_age())  # 20
person.set_age(25)
print(person.get_age())  # 25

在上面的示例中,我们定义了一个Person类,并在类的构造函数中定义了一个受保护的属性_name和一个私有属性__age。通过定义getter和setter方法,我们可以获取和设置受保护的属性_name的值。在获取和设置私有属性__age的值时,我们使用了get和set方法。

在创建对象后,我们可以使用getter方法来获取对象的受保护属性和私有属性的值,并使用setter方法来修改受保护属性的值。在获取和设置私有属性的值时,我们需要使用get和set方法。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档