面向对象三大特性
  封装:根据职责将属性和方法封装到一个抽象的类中
  继承:实现代码的重用,相同代码不需要重复的编写
    1.单继承
    2.多继承
  多态:不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度
 
面向对象--封装
  封装是面向对象一大特点
  面向对象编程的第一步--将属性和方法封装到一个抽象的类中
  外界使用类创建对象,然后让对象调用方法
  对象方法的细节,都被封装中类的内部
  在对象的方法内部,是可以直接访问对象的属性的
  在同一个类创建多个对象之间,属性互不干扰
  一个对象的属性,可以是另外一个类创建的对象
 
练习一:
# 姓名:jack 体重:120 吃饭:+30kg 跑步:-10kg
 
# 新增用户 Ben,其他需求同上
 
练习二
# 1.房子(House) 有户型、总面积 和家具名称列表,新房子没有任何家具
2.家具(Houseltem)有名字 和占地面积,其中 席梦思(bed)占地4平米,衣柜(chest)占地2平米,餐桌(table)占地1.5平米
3.将以上三件家具 添加到房子中
4.打印房子时,要求输出 户型、总面积、剩余面积、家具名称列表
 
思路:
新房子没有家具,所以需要后续添加,此需求需要定义两个类,一个家具类,一个房子类,由于房子需要使用到家具,所以在开发中,被使用的类,通常应该先开发,在房子类中添加家具,计算面积,输出信息
1.创建家具类
 
2.创建房子类
3.在房子类中添加家具,计算剩余面积,输出信息
 
练习三
#1.每一个新兵都没有枪
#2.可以给新兵装配枪
#3.士兵可以开火
#4.枪能够发射子弹
#5.枪能够装填子弹--增加子弹数量
 
思路分析:士兵许三多有一把AK47,士兵类应该有一个枪的属性,枪是由枪类创建出来的对象,士兵的方法有开火,枪的方法有发射子弹、装填子弹,需要先创建一个枪类,再创建一个士兵类,哪个类被使用,就先创建哪个类
 
1.创建枪类/装填子弹/发射子弹
#2.创建士兵类
在定义属性时,如果不知道设置什么初始值,可以设置为None,表示一个空对象,没有方法和属性,是一个特殊的常量
3.完成开火
 
身份运算符
身份运算符用于比较两个对象的内存地址是否一致--是否是对同一个对象的引用
在python中,针对None比时,建议使用is 判断
is 与 == 区别:
  is用于判断两个变量引用对象是否为同一个
  ==用于判断引用变量的值是否相等
 
私有属性和私有方法
应用场景
  在实际开发中,对象的某些属性或方法可能只希望中对象的内部被使用,而不希望在外部被访问到
  私有属性就是对象不希望公开的属性
  私有方法就是对象不希望公开的方法
定义方式
  在定义属性或方法时,在属性名或者方法名前增两个下划线,定义的就是私有属性或方法
 
私有属性
当age设置成私有属性时,在对象的方法内部可以访问,但是在外界不能直接访问
 
私有方法
在方法名前加__,外界不能直接访问
 
伪私有属性和私有方法
  在python中,并没有真正意义的私有
  私有属性、方法在给属性、方法命名时,实际是对名称做了一些特殊处理,使得外界无法访问到
  对名称处理方法:
  属性: _类名__属性名 例如 __age 处理成 _Women__age
  方法:_类名__方法名 例如__secret 处理成_Women__secret()
 
使用格式处理后的名称,依然可以访问私有属性,在日常开发中,不建议使用这种方式访问对象的私有属性和私有方法
 

2.Python封装练习及私有属性的更多相关文章

  1. python基础===类的私有属性(伪私有)

    说在前面的一点: python明明有私有的定义方法就是在变量或者方法的面前加上双下滑线__,这个实际上是python的伪私有.只是一种程序员约定俗称的规定,加了就表示私有变量,但是你如果要在外部调用的 ...

  2. python (伪)私有属性和私有方法

    1.定义方式 在定义属性或方法时,在属性名或者方法名前增加两个下划线,定义的就是私有属性或方法. 2.为什么要定义私有属性和私有方法 在实际开发中,对象的某些属性或方法只希望在对象的内部被使用,而不希 ...

  3. Python的伪私有属性

    什么是伪私有属性? 在Python中,没有类似 private 之类的关键字来声明私有方法或属性. Python中要声明私有属性,需要在属性前加上双下划线(但是结尾处不能有双下划线),如:self._ ...

  4. python学习笔记013——模块中的私有属性

    1 私有属性的使用方式 在python中,没有类似private之类的关键字来声明私有方法或属性.若要声明其私有属性,语法规则为: 属性前加双下划线,属性后不加(双)下划线,如将属性name私有化,则 ...

  5. 【编程开发】Python隐藏属性——使用双下划线标识私有属性,外部不可直接访问

           from:https://zhuanlan.zhihu.com/p/30553607 小编在最初使用上Python之后,就一发不可收拾,人生苦短.我用Python,不光是因为其优雅简洁, ...

  6. Python类总结-封装(私有属性,方法)

    封装基础 广义上面向对象的封装:代码的保护,面向对象的思想本身就是一种封装 只让自己的对象能调用自己类中的方法 狭义上的封装-面向对象三大特性之一(私有变量,用公有的方法封装私有属性,方法叫封装) 把 ...

  7. Python全栈--9.1--面向对象进阶-super 类对象成员--类属性- 私有属性 查找源码类对象步骤 类特殊成员 isinstance issubclass 异常处理

    上一篇文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象 ...

  8. 【python】-- 类的实例化过程、特征、共有属性和私有属性

    实例化过程 1.类的定义和语法 class dog(object): #用class定义类 "dog class" #对类的说明 def __init__(self,name): ...

  9. Python面向对象之私有属性和私有方法

    01. 应用场景及定义方式 应用场景 在实际开发中,对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被访问到 私有属性 就是 对象 不希望公开的 属性 私有方法 就是 对象  ...

随机推荐

  1. 用好JAVA中的函数式接口,轻松从通用代码框架中剥离掉业务定制逻辑

    大家好,又见面了. 今天我们一起聊一聊JAVA中的函数式接口.那我们首先要知道啥是函数式接口.它和JAVA中普通的接口有啥区别?其实函数式接口也是一个Interface类,是一种比较特殊的接口类,这个 ...

  2. Windows API 学习

    Windows API学习 以下都是我个人一些理解,笔者不太了解windows开发,如有错误请告知,非常感谢,一切以microsoft官方文档为准. https://docs.microsoft.co ...

  3. Android蓝牙线控切歌、连接状态监听(无线耳机也适用)

    1. 监听蓝牙设备(音频)连接状态 所有代码已测试在Android11也能正常使用 (Android SDK 30) 首先新建一个广播类 BluetoothStateReceiver /** * @a ...

  4. Html飞机大战(一):绘制动态背景

    好家伙,飞机大战终于开始弄了 这会有很多很多复杂的东西,但是我们总要从最简单,和最基础的部分开始,   我们先从背景开始弄吧! 1.绘制静态背景 这里我们会用到canvas <!DOCTYPE ...

  5. 安装Windows_server_2012_r2虚拟机步骤

    创建虚拟机 使用Windows_server_2012_r2镜像 网上搜索Windows产品密钥:TVNTG-VFJQ3-FQXFP-DVCP6-D3VJ8 点击完成,等待加载 选择第二个 等待安装 ...

  6. FR801xH开发

    一.空间分配 二.代码流程 1)user_custom_parameters 函数 __jump_table 结构体中保存了一些配置信息: void user_custom_parameters(vo ...

  7. 如何实现Windows平台RTMP播放器/RTSP播放器播放窗口添加OSD文字叠加

    好多开发者在做Windows平台特别是单屏多画面显示时,希望像监控摄像机一样,可以在播放画面添加OSD台标,以实现字符叠加效果,大多开发者可很轻松的实现以上效果,针对此,本文以大牛直播SDK (Git ...

  8. Android平台摄像头/屏幕/外部数据采集及RTMP推送接口设计描述

    好多开发者提到,为什么大牛直播SDK的Android平台RTMP推送接口怎么这么多?不像一些开源或者商业RTMP推送一样,就几个接口,简单明了. 不解释,以Android平台RTMP推送模块常用接口, ...

  9. 【读书笔记】C#高级编程 第八章 委托、lambda表达式和事件

    (一)引用方法 委托是寻址方法的.NET版本.委托是类型安全的类,它定义了返回类型和参数的类型.委托不仅包含对方法的引用,也可以包含对多个方法的引用. Lambda表达式与委托直接相关.当参数是委托类 ...

  10. Ubuntu 系统服务器初始化配置、安全加固、内核优化和常用软件安装的Shell脚本分享

    转载自:https://www.bilibili.com/read/cv13875402?spm_id_from=333.999.0.0 描述: 适用于企业内部 Ubuntu 操作服务器初始化.系统安 ...