首页 > 编程语言 >怎么看python有没有封装

怎么看python有没有封装

时间:2023-07-24 13:04:46浏览次数:33  
标签:__ 有没有 python self 修饰符 访问 var 封装

Python封装的概念和作用

在面向对象编程中,封装是一种将数据和代码包含在一个单独的单元中的机制。通过封装,我们可以隐藏对象的内部实现细节,只暴露必要的接口供其他对象使用。Python是一种面向对象的编程语言,提供了良好的封装机制,使得我们可以更好地组织和管理代码。

Python的封装主要通过“访问控制”来实现。访问控制是指对对象属性和方法的访问权限进行限制,以防止直接对其进行修改或调用。Python提供了三种访问限制修饰符:公开(public)、保护(protected)和私有(private)。这些修饰符可以应用于属性和方法,以达到不同的封装效果。

访问修饰符和封装示例

公开访问修饰符

公开访问修饰符在Python中是默认的修饰符,不需要特殊的标识符来声明。公开的属性和方法可以在对象的内部和外部被直接访问和调用。

class MyClass:
    def __init__(self):
        self.public_var = 10

    def public_method(self):
        return self.public_var

my_obj = MyClass()
print(my_obj.public_var)  # 输出:10
print(my_obj.public_method())  # 输出:10

保护访问修饰符

保护访问修饰符使用一个下划线(_)来标识,表示属性或方法只能在对象的内部或子类中被访问和调用,外部不能直接访问。

class MyClass:
    def __init__(self):
        self._protected_var = 10

    def _protected_method(self):
        return self._protected_var

my_obj = MyClass()
print(my_obj._protected_var)  # 输出:10
print(my_obj._protected_method())  # 输出:10

私有访问修饰符

私有访问修饰符使用两个下划线(__)来标识,表示属性或方法只能在对象的内部被访问和调用,外部不能直接访问。私有属性和方法对于外部来说是完全不可见的,只能在类的内部使用。

class MyClass:
    def __init__(self):
        self.__private_var = 10

    def __private_method(self):
        return self.__private_var

my_obj = MyClass()
# print(my_obj.__private_var)  # 报错:AttributeError: 'MyClass' object has no attribute '__private_var'
# print(my_obj.__private_method())  # 报错:AttributeError: 'MyClass' object has no attribute '__private_method'

解决实际问题:封装数据库访问类

在实际的软件开发中,我们常常需要与数据库进行交互。为了将数据库操作封装起来,提高代码的可维护性和重用性,我们可以创建一个数据库访问类。

import sqlite3

class Database:
    def __init__(self, db_name):
        self.db_name = db_name
        self.connection = None

    def connect(self):
        self.connection = sqlite3.connect(self.db_name)

    def disconnect(self):
        self.connection.close()

    def execute_query(self, query):
        cursor = self.connection.cursor()
        cursor.execute(query)
        result = cursor.fetchall()
        cursor.close()
        return result

# 使用示例
db = Database('mydatabase.db')
db.connect()
result = db.execute_query('SELECT * FROM users')
db.disconnect()

在上述例子中,我们创建了一个名为Database的类,封装了与数据库的连接、断开连接和执行查询的操作。外部只需要实例化该类,并调用相应的方法,而无需关心具体的数据库访问细节。

通过封装数据库访问类,我们可以实现以下好处:

  • 隐藏了数据库连接和查询的具体实现细节,使得代码更加简洁和易读。
  • 通过封装,可以将数据库访问的代码集中在一个类中,提高代码的可维护性和重用性。
  • 可以方便地对数据库访问进行扩

标签:__,有没有,python,self,修饰符,访问,var,封装
From: https://blog.51cto.com/u_16175500/6834168

相关文章

  • 在控制台中打印出一个半菱形python
    在控制台中打印半菱形的Python作为一名经验丰富的开发者,我将教会你如何在控制台中打印出一个半菱形的图案。以下是整个实现过程的步骤:步骤描述步骤1获取用户输入的行数步骤2打印上半部分的菱形步骤3打印下半部分的菱形现在,让我为你解释每一步需要做什么,并......
  • 斐波纳契数列 IIPython
    斐波纳契数列II:Python1.引言斐波纳契数列(Fibonaccisequence)是一个经典的数列,起源于13世纪的意大利数学家列昂纳多·斐波那契(LeonardoFibonacci)。这个数列的定义如下:F(0)=0F(1)=1F(n)=F(n-1)+F(n-2)(n>1)即,数列的第0个元素为0,第1个元素为1,之后的每个元素都是......
  • 详解Python对Excel处理
    Excel是一种常见的电子表格文件格式,广泛用于数据记录和处理。Python提供了多个第三方库,可以方便地对Excel文件进行读写、数据操作和处理。本文将介绍如何使用Python对Excel文件进行处理,并提供相应的代码示例和详细说明。一、安装第三方库在开始之前,我们需要安装一些Python第三......
  • 【Python】转载一个python 爬虫的帖子
    原帖地址原帖标题:爬取图网的4K图片自动保存本地https://www.52pojie.cn/thread-1809600-1-1.html(出处:吾爱破解论坛)python代码importos.pathimportrandomimporttimeimportrequestsfromlxmlimportetreeimportwebbrowserwebbrowser.open('https://pic.net......
  • 使用Python读取txt中的指定内容
    一、序在一些情况下,导出txt的配置信息,但是又有特定的规律。在这种情况下读取配置二、问题分析我们首先肯定是通过关键字定位文本位置,但txt文件我们会面临两种情况:1.关键字与文本在同一行2.关键字与文本不在同一行3.判断条件例如MAC地址只有有IP的才读取,没有IP的就......
  • 【Python】输出函数:pint
    输出函数:printprint() 方法用于打印输出,最常见的一个函数。print在Python3.x是一个函数,但在Python2.x版本不是一个函数,只是一个关键字。语法:print(*objects,sep='',end='\n',file=sys.stdout,flush=False)参数objects--复数,表示可以一次输出多个对象。输出......
  • Python list里面定义自定义类型
    PythonList中定义自定义类型在Python中,List(列表)是一种非常常见且强大的数据结构。它允许我们以有序的方式存储和访问多个元素。在List中,我们可以存储各种类型的数据,包括整数、浮点数、字符串等。但是,Python的灵活性还允许我们在List中存储自定义的数据类型,从而提供更高的灵活性和......
  • Python【17】 torch.cat()
    竖着或者横着拼接矩阵参考:https://www.cnblogs.com/JeasonIsCoding/p/10162356.html参考:https://blog.csdn.net/qian2213762498/article/details/88795848......
  • python的lru_cache
    functools模块中的lru_cache是一个装饰器,用于缓存函数的结果,以避免重复计算。LRU(LeastRecentlyUsed)表示最近最少使用,这意味着当缓存空间满时,会优先删除最久未被使用的缓存项。要使用lru_cache装饰器,需要将其应用于你想要缓存的函数。以下是一个简单的例子:importfunctools@f......
  • android meidaplayer + surfaceview封装视频播放
    AndroidMediaPlayer+SurfaceView封装视频播放作为一名经验丰富的开发者,我将教会你如何使用AndroidMediaPlayer和SurfaceView来封装视频播放功能。下面是整个实现过程的步骤:步骤操作1添加权限和组件2初始化MediaPlayer3设置SurfaceView4设置资源......