面向对象三大特性
  封装:根据职责将属性和方法封装到一个抽象的类中
  继承:实现代码的重用,相同代码不需要重复的编写
    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. 年度开源盛会 ApacheCon 首发中文盛宴来临,欢迎报名!

    ApacheCon 是久负盛名的开源盛宴,为开源界备受关注的会议之一,也是开源运动早期的知名活动之一,其最早的一期要追溯 1998 年,也是在这一届上,开发 HTTPD 服务的开发者们欢聚一堂,并决定 ...

  2. Canvas 非常重要的三个函数

    beginPath 绘制路径必须添加 beginPath().它标志着一个画笔在画布中哪个地方开始画起.没有它,新起的画笔位置必定与上一次画笔结束的位置相连. // 第一个半圆 ctx.arc(60, ...

  3. PerfView专题 (第十一篇):使用 Diff 功能洞察 C# 内存泄漏增量

    一:背景 去年 GC架构师 Maoni 在 (2021 .NET 开发者大会) [https://ke.segmentfault.com/course/1650000041122988/section ...

  4. 【JDBC】学习路径10-c3p0数据源的使用(JDBC完结)

    第一章:下载 c3p0官网:https://www.mchange.com/projects/c3p0/ 这个是SourceForge提供的下载地址:https://sourceforge.net/p ...

  5. C++工厂方法模式讲解和代码示例

    在C++中使用模式 使用示例: 工厂方法模式在 C++ 代码中得到了广泛使用. 当你需要在代码中提供高层次的灵活性时, 该模式会非常实用. 识别方法: 工厂方法可通过构建方法来识别, 它会创建具体类的 ...

  6. 华南理工大学 Python第6章课后测验-2

    1.(单选)以下关于语句 a = [1,2,3,(4,5)]的说法中,正确的个数有( )个.(1)a是元组类型   (2)a是列表类型  (3)a有5个元素      (4)a有4个元素(5)a[1] ...

  7. Java中一些必须要知道的东西

    直接打印数组名称,得到的是数组对应的内存地址--哈希值.

  8. 【Tool】Idea快捷键

    Windows Ctrl + F12: 查找当前类中的方法 Ctrl + N: 查找类 Ctrl + Alt + H: 查看方法调用关系 Ctrl + H: 查看类的继承关系 Alt + F7:查找类 ...

  9. 使用 Traefik 代理 UDP 服务

    文章转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247488836&idx=1&sn=740f9aac ...

  10. Portainer 基本功能介紹之升級映像檔並更新 Container

    文档地址:https://www.asustor.com/zh-tw/online/College_topic?topic=145#dpt7