python基础--面向对象之封装
# 在python中用双下划线,开头的方式将属性隐藏起来(设置成私有的) # 但其实这只是一种变形操作,而且仅仅在类定义阶段会发生变形 # 类中所有双下划线开头的如__x都会在类定义的时候自动形成:_类名__x的形式。 class A:__N = 0# 类的属性就应该是共享的,但是语法上是可以把类的数据属性设置成私有的如__N 会变成_A__Ndef __init__(self):self.__X = 10# self._A__Xdef __foo(self): # _A__fooprint('from A')def bar(self):self.__foo() # 只有在类的内部才可以通过__foo的形式访问到print(self.__N) #A._A__是可以访问到的 # 这种,在外部是无法通过__x这个名字访问到的 a = A() a.bar() # print(a.__N) print(a._A__N) print(a.__dict__)a.__Y = 1 print(a.__dict__)# 在继承中父类如果不想让子类覆盖自己的方法,可以将方法定义 # 为私有的 class A:def fa(self):print('from A')def test(self):self.fa() class B(A):def fa(self):print('from B') b = B() b.test()# 将fa定义成私有的即__fa class A:def __fa(self):print('from A')def test(self):self.__fa()print(self.__fa) class B(A):def __fa(self):print('from B') b = B() b.test() # 我们可以来看一下执行过程,执行test-此时self为b对象-寻找__fa方法(前面我们说过,__fa会变成_A.__fa)- # 首先咋B类中找,没有找到,-然后在父类A中寻找-执行# 封装的真谛在于明确地区分内外,封装的属性可以直接在内部使用,而不能在外部直接使用,然而定义 # 属性的目的终归是要用,外部想要用类隐藏的属性,需要我们为其开辟接口, # 1,封装数据,将数据隐藏起来不是目的,隐藏起来然后提供操作该数据的接口,然后我们可以在 # 接口上附加对返数据操作的限制,以此完成对数据属性的严格控制 # 类比于电脑上的各种配件,就是被封装的数据,我们可以通过操作来改变电脑硬件的配置, # 例如我们要加一块内存条,只需要知道接口,频率等参数,而不用知道内存条是什么材质的, # 也不用知道内存条内部颗粒的构成 class Teacher:def __init__(self,name,age):self.__name = nameself.__age = ageself.set_info(name,age)def tell_info(self):print('name:%s,age:%s' %(self.__name,self.__age))def set_info(self,name,age):if not isinstance(name,str):raise TypeError("姓名必须是字符串类型")if not isinstance(age,int):raise TypeError("年龄必须是整数类型")self.__name = nameself.__age = age t = Teacher('wang',21) t.tell_info() t.set_info('cong',21) t.tell_info() # 2,封装方法:目的是隔离复杂度 # 就像我们玩电脑一样,我们不需要知道电脑的工作原理,只需要知道他是怎么用的就可以了
转载于:https://www.cnblogs.com/cong12586/p/11366512.html
python基础--面向对象之封装相关推荐
- python基础—面向对象
python基础-面向对象 面向对象 面向过程VS面向对象 类和实例 实例变量和类变量 类的方法 实例方法 静态方法 类方法 面向对象的组合用法 封装.继承和多态 封装 继承 派生 方法的重写 继承注 ...
- python基础——面向对象的程序设计
python基础--面向对象的程序设计 1 什么是面向对象的程序设计 面向过程的程序设计的核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优 ...
- Python之面向对象(封装、继承、多态)
目录 1.Java与Python中面向对象的区别 2.封装 3.继承[在Python中,所有类默认继承object类] 4.多态 1.Java与Python中面向对象的区别 该篇文章适合掌握Java面 ...
- [python基础] 面向对象——封装,继承
面向对象 一.面向对象的基础知识 二.类和面向对象 三.封装 四.继承 (1).基本使用方法 (2).链表相加 (3).多继承 (4).私有属性与私有方法 一.面向对象的基础知识 1.面向对象 定义: ...
- 【Python】面向对象,封装
封装来了:封装是啥?封装就好像把你需要的东西装到盒子里然后用封口胶把空封起来.照这种逻辑看,封装="隐藏". 哪在Python中怎么看出来隐藏呢? 在Python中用双下划线开头的 ...
- 学Python基础面向对象看这一篇文章就够了【全网首推】
目录 面相对象基础语法 目标 01. dir 内置函数(知道) 02. 定义简单的类(只包含方法) 2.1 定义只包含方法的类 2.2 创建对象 2.3 第一个面向对象程序 03. 方法中的 self ...
- python基础 面向对象编程
目录 面向对象编程 1.什么是面向对象编程? 面向过程编程思想 面向对象编程思想 2.什么是类?如何定义. 类: 对象 3.如何产生对象? 调用类时的事件: 4.对象属性的查找顺序: 5.类内部的函数 ...
- python基础----面向对象的程序设计(五个阶段、对小白的忠告、关于OOP常用术语)、类、对象...
一.面向对象的软件开发有如下几个阶段 1.面向对象分析(object oriented analysis ,O ...
- Python基础-------面向对象二
目录 一.封装 二.property装饰器 三.继承 四.多继承 五.方法的重写 super方法 一.封装 什么是封装 在日常中封装指的是将我们的物品包裹起来,不让看到其内部,具有保护的功能.在程序设 ...
- Python基础-面向对象编程
本文完全转载自廖雪峰大神的教程: 面向对象编程 面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数 ...
最新文章
- Error:Execution failed for task ':app:dexDebug'. com.android.ide.common.process.ProcessException
- python 序列化函数_python – 如何序列化sympy lambdified函数?
- 带给你灵感的20个漂亮的单页网站设计作品
- VS2010 加入OpenCV 提示 0xc000007b 的错误
- Python实现模板
- lisp中怎样调取图形_越玩越聪明的图形思维游戏
- ZooKeeper的十二连问,你顶得了嘛?
- [原]tornado源码分析系列(五)[HTTPServer 层]
- Docker进阶学习(容器数据卷、安装Mysql、DockerFile )
- java外文文库_java外文文献毕业设计
- mybatis的selectOne分享
- 2019 Multi-University Training Contest 6 1005	Snowy Smile —— 线段树
- 抖音快手初学者如何快速成长
- Android打开H5时提示“请在微信客户端打开”
- vs2010无法找到程序,安装Microsoft Visual Studio 2010 Service Pack 1 ,系统无法找到指定的对象
- ZCU102开发板的时钟系统
- 第1章 数据库应用系统开发方法
- JAVA编写 飞翔的小鸟
- DAE模型——阅读和理解COLLADA文档(1)
- [日推荐]『拉了吗』出门必备
热门文章
- java SimpleDateFormat类浅析
- 在vscode中使用ajax,vscode中的ajax片段,
- html5画电池状态,JavaScript里获取电池状态的方法
- java父类可以强转为子类吗_java父类可以强制转化成子类吗?
- jni问题总结:jni error (app bug): accessed stale local reference
- 春运来了,你的火车票备好了么?
- path和classpath的区别
- Java基础---Java---IO流-----LineNumberReader方法及原理、自定义一个LineNumberReader、字节流、图片复制、mp3复制、
- unity创建一个简单对象的开销_SpringBoot第一篇:创建一个简单的SpringBoot
- html 边框轮廓,CSS Outline(轮廓)