面向对象三大特性
  封装:根据职责将属性和方法封装到一个抽象的类中
  继承:实现代码的重用,相同代码不需要重复的编写
    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. DolphinScheduler 在绿瘦的实践成果,开启了我的开源之路!

    点击上方 蓝字关注我们 ✎ 编 者 按 2021 年,Apache DolphinScheduler 社区又迎来了新的蓬勃发展,社区活跃度持续提高.目前,项目 GitHub Star 已达 6.7k, ...

  2. DolphinScheduler 1.2.0 源码解析之 MasterServer

    这一篇主要讲解的是dolphinscheduler 1.2.0 的master部分的源码,从主类MasterServer开始,从启动到运行,master主要做了以下三件事情 Zookeeper 节点初 ...

  3. PyCharm 2022.2 发布了,支持最新 Python 3.11 和 PyScript 框架!

    来源:Jet Brains官网:翻译:Python猫 原文:https://blog.jetbrains.com/pycharm/2022/07/2022-2 通常而言,使用新潮的或者快速发展的技术, ...

  4. LuoguP2876 [USACO07JAN]解决问题Problem Solving (区间DP)(未完成)

    #include "Head.cpp" const int N = 307; int f[N][N], a[N], b[N], sumA[N], sumB[N]; int main ...

  5. Java多线程开发系列之五:Springboot 中异步请求方法的使用

    Springboot 中异步线程的使用在过往的后台开发中,我们往往使用java自带的线程或线程池,来进行异步的调用.这对于效果来说没什么,甚至可以让开发人员对底层的状况更清晰,但是对于代码的易读性和可 ...

  6. suse 11 sp3编译报错问题

    suse安装,默认是不安装gcc的,今天安装gcc之后,编译suse11 sp3,报错如下: scripts/basic/fixdep.c:106:23: fatal error: sys/types ...

  7. JSP中的EL 表达式

    JSP中的EL 表达式 什么是 EL 表达式,EL 表达式的作用? EL 表达式的全称是:Expression Language.是表达式语言. EL 表达式的什么作用:EL 表达式主要是代替 jsp ...

  8. MongoDB,入门看这一篇足矣!

    一.介绍 在介绍 MongoDB 之前,我先介绍一下业务开发的时候遇到的痛点,以便大家对它有一个更加清晰的认识! 最近在用数据库存储数据的时候发现这么一个坑,例如从消息队列中监听消息的时候,原来的做法 ...

  9. Kingbase V8R6存储过程变量数据导出到操作系统文件

    Kingbase V8R6存储过程变量数据导出到操作系统文件 说明: KingbaseES V8R6如何将自定义过程中的变量数据导出到操作系统文件中. 本次案例数据库版本: test=# select ...

  10. UTL_FILE 包使用介绍

    Postgresql 不支持 package功能,这给oracle 向 postgresql迁移增加了很多迁移工作.人大金仓Kingbase数据库实现了类似 oracle package 功能,并提供 ...