从零开始的Python学习Episode 20——面向对象(3)
面向对象之封装
封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体。
隐藏
在python中用双下划线开头的方式将属性隐藏起来(设置成私有的)
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的形式访问到. #在类的外部像__X=1和__foo()这样调用是不正确的
但是,这种机制也并没有真正意义上限制我们从外部直接访问属性,知道了类名和属性名就可以拼出名字:_类名__属性,然后就可以访问了,如a._A__N,即这种操作并不是严格意义上的限制外部访问,仅仅只是一种语法意义上的变形,主要用来限制外部的直接访问。
特性(property)
property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值。
举个例子
例一:BMI指数(bmi是计算而来的,但很明显它听起来像是一个属性而非方法,如果我们将其做成一个属性,更便于理解)
class People:def __init__(self,name,weight,height):self.name=nameself.weight=weightself.height=height@propertydef bmi(self):return self.weight / (self.height**2)p1=People('pup',53,1.70) print(p1.bmi) #输出18.339100346020764
这种特性是不能被修改赋值的,否则会报错。
转载于:https://www.cnblogs.com/smilepup-hhr/p/10461112.html
从零开始的Python学习Episode 20——面向对象(3)相关推荐
- 从零开始的Python学习Episode 4——列表
一.列表 列表与数组相似,定义一个列表 a=[1,2,3,4,5] 1.基本操作 1 a=[1,2,3,4] 2 3 #切片 范围取值时,包括第一项但不包括最后一项,顾头不顾尾 4 print(a[0 ...
- 从零开始学习python编程-从零开始的Python学习 -- 简单的练习题
从零开始的Python学习 – 简单的练习题 目录: 从零开始的Python学习 -- 简单的练习题 前言: 顺序结构 A+B problem 苹果采购 分支结构 数的性质 闰年判断 Apple 循环 ...
- 从零开始的Python学习 -- 简单的练习题
从零开始的Python学习 – 简单的练习题 目录: 从零开始的Python学习 -- 简单的练习题 前言: 顺序结构 A+B problem 苹果采购 分支结构 数的性质 闰年判断 Apple 循环 ...
- python 简单实例训练(1~10)-从零开始的Python学习 -- 简单的练习题
从零开始的Python学习 – 简单的练习题 目录: 从零开始的Python学习 -- 简单的练习题 前言: 顺序结构 A+B problem 苹果采购 分支结构 数的性质 闰年判断 Apple 循环 ...
- 从零开始:Python学习成长路线
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...
- 2021小白Python学习记录Day7 面向对象基础(上) (定义类和对象、__init__传参、self、魔术方法)
目录 一.定义类和对象 1.定义类 2.创建一个对象 2.1 创建一个实例对象并调用实例方法 2.2 创建另一个实例对象: 2.3 添加实例属性 二.__init__(self) 1. __init_ ...
- Python学习笔记:面向对象高级编程(完)
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- Python学习笔记:面向对象高级编程(中下)
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- Python学习笔记:面向对象高级编程(中上)
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- Python学习笔记:面向对象高级编程(上)
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
最新文章
- 怎么用计算机不会卡,电脑卡顿不流畅怎么解决?
- TCP、UDP和HTTP
- 作为 IT 行业的过来人,你有什么话想对后辈说的?2
- [python3] pyton socket 同步通信举例
- Java多线程——重入锁ReentrantLock源码阅读
- 24 SD配置-主数据-维护客户主记录中的保留字段
- JavaScript循环结构(1)
- 在线excel表格,支持协同编辑
- android 绘制分割线,Android 布局中分割线创建的三种方式
- Unhandled Exception: Looking up a deactivated widget‘s ancestor is unsafe.
- 打造前端MAC工作站(五)让我们熟悉一下 MAC 命令行吧!
- Block.one的EOS区块链入门开发教程Elemental Battles
- 用I2C级联扩展器做一个时钟盒子
- Icon glyphs 小图标命名收藏
- Mirai使用与攻击
- 修复xp打印服务器失败,xp打印机服务器设置方法
- Python 进阶必备:进程模块 multiprocessing
- 立方车场系统显示电脑连不上服务器,立方停车场车辆出入智能管理系统.ppt
- 离散数学 (II) 习题 1
- WhatsApp首次和东家Facebook实现用户数据互联
热门文章
- 苹果mac专业音频处理软件:Audition
- 如何防止 Safari 使用来自 iOS 15 和 macOS Monterey 的网站着色?
- iOS开发之国际化(本地化)
- WingPro 8 for Mac(专业Python IDE开发工具)
- DBeaverUE for Mac(数据库管理软件)旗舰版
- 自定义Mac睡眠时间,保持运行状态
- python里的拆包、引用、递归与匿名函数
- Linux KVM构建及管理
- SCCM 2012系列2 服务器准备下
- perl Makefile.PL;make;make install 安装时报错