首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python之类的封装

python之类的封装

作者头像
jiankang666
发布于 2022-12-05 05:40:13
发布于 2022-12-05 05:40:13
80100
代码可运行
举报
文章被收录于专栏:java基础笔记java基础笔记
运行总次数:0
代码可运行

博主简介:原互联网大厂tencent员工,网安巨头Venustech员工,阿里云开发社区专家博主,微信公众号java基础笔记优质创作者,csdn优质创作博主,创业者,知识共享者,欢迎关注,点赞,收藏。


一、背景

  Python 是一门易于学习、功能强大的编程语言。它提供了高效的高级数据结构,还能简单有效地面向对象编程。Python 优雅的语法和动态类型以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的理想语言。下面我们来介绍一下python的类的封装。


二、封装

  封装,就是把客观事物封装成抽象的类,并规定类中的数据和方法只让可信的类或对象操作。封装可分为两个层面: (1)第一层面的封装,创建类和对象时,分别创建两者的名称,只能通过类名或者对象名加“.”的方式访问内部的成员和方法,前面介绍的例子其实都是这一层面的封装。 (2)第二层面的封装,类中把某些成员和方法隐藏起来,或者定义为私有,只在类的内部使用,在类的外部无法访问,或者留下少量的接口(方法)供外部访问。

私有化方法:在准备私有化的数据成员或方法的名字前面加两个下划线“__”即可。

  例:私有化数据成员和方法。Python目前的私有机制其实是伪私有,实际上,在外部可以通过“类名_属性”访问私有变量和方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class A:                #定义类
    def __init__(self):
        self.__X =              #定义私有变量并赋值为10
    def __foo(self):             #定义私有方法
        print('from A')
a = A()                #创建对象
print(a.__X)            #输出私有变量值
a.__foo()                #调用私有方法


print(a._A__X)    #通过类名访问私有变量
a. _A__foo()    #通过类名调用私有方法

  结果如下,大家可以复制代码尝试。

  对于这一层面的封装(隐藏),我们需要在类中定义一个方法(也称接口函数),在它内部访问被隐藏的属性和方法,然后外部可以通过接口函数进行访问。

  例:在类中增加一个方法(接口函数),实现通过调用该方法访问内部成员及内部方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class A:            #定义类
    def __init__(self):
        self.__X =          #定义私有变量并赋值为10
    def __foo(self):         #定义私有方法
        print('from A')
    def bar(self):        #定义接口函数
        self.__foo()         #类内部访问私有方法
        return self.__X        #返回私有变量__X的值
a = A()            #创建对象
b = a.bar()        #调用接口函数,将返回值赋给b
print(b)            #输出b的值

  结果如下,大家可以复制代码尝试。


三、参考

1、廖雪峰的官网 2、python官网 3、Python编程案例教程


四、总结

  以上就是就是关于Python类的封装相关知识,可以参考一下,觉得不错的话,欢迎点赞、收藏、在看,欢迎微信搜索关注java基础笔记,后面会不断更新相关知识,大家一起进步。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java基础笔记 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
封装-python
    从封装本身的意思去理解,封装就好像是拿来一个麻袋,把小猫,小狗,小王八,还有alex一起装进麻袋,然后把麻袋封上口子。但其实这种理解相当片面
超蛋lhy
2018/08/31
1.1K0
封装-python
面向对象之封装
3.在子类定义的__x不会覆盖在父类定义的__x,因为子类中变形成了:_子类名__x,而父类中变形成了:_父类名__x,即双下滑线开头的属性在继承给子类时,子类是无法覆盖的。
全栈程序员站长
2022/07/21
5630
Python面向对象之封装(04)
封装是面向对象编程的一大特点,面向对象编程的第一步将属性和方法封装到一个抽象类中,外界使用类创建对象然后让对象调用方法,对象方法的的细节都被封装在类的内部。
PM小王
2019/07/02
5510
python3--面向对象的三大特性:封装,property,classmethod,staticmethod
AttributeError: type object 'A' has no attribute '__N'
py3study
2018/08/02
9810
Python之面向对象三
面向对象的三大特性: 多态 多态指的是一类事物有多种形态。Python3天生支持多态。 动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.ABCMeta): #同一类事物:动物 @abc.abstractmethod def talk(self): pass class People(Animal): #动物的形态之一:人 def talk(self): print('say hello') c
新人小试
2018/04/12
8430
Python之面向对象三
python中class的定义及使用_python中class的定义及使用
python的class(类)相当于一个多个函数组成的家族,如果在这个Myclass大家族里有一个人叫f,假如这个f具有print天气的作用,那么如果有一天我需要这个f来print一下今天的天气,那么我必须叫他的全名MyClass.f才可以让他给我print,即在调用他的时候需要带上他的家族名称+他的名称。
全栈程序员站长
2022/08/18
1.5K0
python中class的定义及使用_python中class的定义及使用
Python快速学习第六天
第六天: 面向对象 1. 面向对象的特点——多态,封装,继承  对象:包括特性和方法,特性只是作为对象的一部分变量,而方法则是存储在对象内的函数。 (1)多态——对不同类的对象,使用同样操作。不知道对象到底是什么类型,但又要对对象做一些操作    很多内置的函数和运算符都是多态的    不用关注x到底是什么类型,都可以使用count函数,另外还有repr(),连接符+等 Python代码   1.  >>> x = 'string' #x是字符串 2.  >>> x.count('s')   3.  1 
汤高
2018/01/11
7770
Python快速学习第六天
Python面向对象---类的基本使用
方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
用户9925864
2022/07/27
6080
图解python | 面向对象编程
教程地址:http://www.showmeai.tech/tutorials/56
ShowMeAI
2022/02/23
6750
图解python | 面向对象编程
python面向对象之继承与派生
python到底是如何实现继承的,对于你定义的每一个类,python会计算出一个方法解析顺序(MRO)列表,这个MRO列表就是一个简单的所有基类的线性顺序列表,例如
菲宇
2019/06/13
5340
python面向对象之继承与派生
面向对象的三大特性(封装、继承、多态)
继承 什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 class ParentClass1: #定义父类 pass class ParentClass2: #定义父类 pass class SubClass1(ParentClass1): #单继承,基类是ParentClass1,派生类是SubClass pass class SubClass2
用户1214487
2018/01/23
4.2K0
面向对象的三大特性(封装、继承、多态)
python--面向对象与模块补充,反射
在python中,私有属性可以通过__(两个下划线定),实际上一个下划线也表示私有属性,不过还是可以访问到 关于私有属性、方法——Python并没有真正的私有化支持,但可用下划线得到伪私有,所以尽量避免定义以下划线开头的变量 "单下划线 " 开始的成员变量叫做保护变量,意思是只有类对象(即类实例)和子类对象自己能访问到这些变量,需通过类提供的接口进行访问;不能用'from module import *'导入,类似于php的protected受保护的,直接通过实例化对象和子类都可以访问 class Peo
IT架构圈
2018/06/01
4120
7.0 Python 面向对象编程
python是一种面向对象的编程语言,面向对象编程(Object-Oriented Programming,OOP)是一种编程思想,其核心概念是“对象”。对象是指一个具有特定属性和行为的实体,而面向对象编程就是通过对这些实体进行抽象、分类、封装和继承等操作,来实现程序的结构和逻辑。在python中,我们可以通过定义类、创建实例和调用方法等方式,来实现面向对象编程的思想,从而编写出更加灵活、可扩展、易维护的程序。
王 瑞
2023/08/14
3250
Python中类的成员
细分类的组成成员 之前咱们讲过类大致分两块区域 class A: name = '陈松' # 第一部分:静态字段(静态变量)部分(这一部分调用了类自己本身,表示了类自己的自身属性) def __init__(self): pass def func(self): pass # 第二部分:方法部分(这一部分表示了类可以实施的方法,可以 自己或其他进行操作) 每个区域详细划分 class A:#在方法名前面带__的属于私有 compan
星陨1357
2023/03/14
1.2K0
Python中类的成员
Python中真的有私有化操作吗?
Python的发展是受到当时ABC语言和C语言的影响,结合他们的优势而开发出来的一门动态类型语言,同时兼具面向过程开发和面向对象开发的优点,针对不同类型的、不同规模的项目,可以有针对性的、快捷的完成项目功能处理。随着Python逐步拓展到行业中的各个方面,和其他纯面向对象的高级语言之间的平行交叉越来越明显,于是乎出现了各种项目开发约束和规范。今天我们要说的私有化,就是其中的一种约束规范。
大牧莫邪
2021/12/16
1.3K0
面向对象的三大特性
继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 1 class ParentClass1: #定义父类 2 pass 3 4 class ParentClass2: #定义父类 5 pass 6 7 class SubClass1(ParentClass1): #单继承,基类是ParentClass1,派生类是SubClass 8 pas
人生不如戏
2018/04/12
7030
Python - 面向对象编程 - 公共属性、保护属性、私有属性
无论是类对象还是实例对象,都可以通过 ._类名__名称 来调用私有属性、方法,这算是一种间接调用
小菠萝测试笔记
2021/09/07
2.4K0
Python私有化及_下划线命名用途
前置单下划线的意思是 提示 其他程序员,以单下划线开头的变量或方法只在内部使用。PEP 8 中定义了这个约定( PEP 8 是最常用的 Python 代码风格指南)。
忆想不到的晖
2021/04/04
1K0
封装、私有,一文掌握Python关键代码
首先,什么是 Python?根据 Python 创建者 Guido van Rossum 所言,Python 是一种高级编程语言,其设计的核心理念是代码的易读性,以及允许编程者通过若干行代码轻松表达想法创意。实际上,我选择学习 Python 的首要原因是其编程的优美性,用它编码和表达想法非常自然。 Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。 另一
BestSDK
2018/03/01
1.6K0
封装、私有,一文掌握Python关键代码
Python 面向对象编程详解
Python 支持面向过程、面向对象、函数式编程等多种编程范式,且不强制我们使用任何一种编程范式,我们可以使用过程式编程编写任何程序,在编写小程序时,基本上不会有问题.但对于中等和大型项目来说,面向对象将给我们带来很多优势.接下来将结合面向对象的基本概念和Python语法的特性讲解面向对象的编程.
王 瑞
2022/12/28
6450
相关推荐
封装-python
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验