跟小罗学python看完这篇文章,你的Python基础就差不多了(附409集精品教程)( 六 )
在开发中 , 如果希望在 创建对象的同时 , 就设置对象的属性 , 可以对 __init__ 方法进行 改造: 把希望设置的属性值 , 定义成 __init__方法的参数 在方法内部使用 self.属性 = 形参 接收外部传递的参数 在创建对象时 , 使用 类名(属性1, 属性2...) 调用class Cat:def __init__(self, name):print("初始化方法 %s" % name)self.name = name...tom = Cat("Tom")...lazy_cat = Cat("大懒猫")...2.5 私有属性和私有方法
应用场景
在实际开发中 , 对象 的 某些属性或方法 可能只希望 在对象的内部被使用 , 而 不希望在外部被访问到
私有属性 就是 对象 不希望公开的 属性
私有方法 就是 对象 不希望公开的 方法
定义方式在 定义属性或方法时 , 在 属性名或者方法名前 增加 两个下划线 , 定义的就是 私有属性或方法:
本文插图
私有属性和私有方法
伪私有属性和私有方法Python 中 , 并没有 真正意义 的 私有在给 属性、方法 命名时 , 实际是对名称做了一些特殊处理 , 使得外界无法访问到处理方式:在 名称 前面加上_类名 => _类名__名称# 私有属性 , 外部不能直接访问到print(xiaofang._Women__age)# 私有方法 , 外部不能直接调用xiaofang._Women__secret()提示:在日常开发中 , 不要使用这种方式 , 访问对象的 私有属性 或 私有方法 。 3. 封装、继承和多态
面向对象三大特性:
封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中
继承 实现代码的重用 , 相同的代码不需要重复的编写
多态 不同的对象调用相同的方法 , 产生不同的执行结果 , 增加代码的灵活度3.1 继承3.1.1 单继承
继承的概念:子类 拥有 父类 以及 父类的父类 中封装的所有 属性 和 方法 。 class 类名(父类名):pass
当 父类 的方法实现不能满足子类需求时 , 可以对方法进行重写(override)重写 父类方法有两种情况:
覆盖 父类的方法:父类的方法实现 和 子类的方法实现完全不同
具体的实现方式 , 就相当于在 子类中 定义了一个 和父类同名的方法并且实现 。
对父类方法进行 扩展:子类的方法实现 中 包含 父类的方法实现
在子类中 重写 父类的方法;在需要的位置使用 super().父类方法 来调用父类方法的执行代码;其他的位置针对子类的需求 , 编写 子类特有的代码实现 。 关于 super
在 Python 中 super 是一个 特殊的类
super()就是使用 super 类创建出来的对象
最常 使用的场景就是在 重写父类方法时 , 调用 在父类中封装的方法实现调用父类方法的另外一种方式:在 Python 2.x 时 , 如果需要调用父类的方法 , 还可以使用以下方式:父类名.方法(self) 。 目前在 Python 3.x 还支持这种方式 , 但不推荐使用 , 因为一旦 父类发生变化 , 方法调用位置的 类名 同样需要修改 。 父类的 私有属性 和 私有方法
子类对象 不能 在自己的方法内部 , 直接 访问 父类的 私有属性 或 私有方法子类对象 可以通过 父类 的 公有方法 间接 访问到 私有属性 或 私有方法私有属性、方法 是对象的隐私 , 不对外公开 , 外界 以及 子类 都不能直接访问 私有属性、方法 通常用于做一些内部的事情3.1.2 多继承
子类 可以拥有 多个父类 , 并且具有 所有父类 的 属性 和 方法 , 例如:孩子 会继承自己 父亲 和 母亲 的 特性 。 class 子类名(父类名1, 父类名2...):passPython 中的 MRO算法(Method Resolution Order)
如果 不同的父类 中存在 同名的方法 , 子类对象 在调用方法时 , 会调用 哪一个父类中的方法呢?
提示:开发时 , 应该尽量避免这种容易产生混淆的情况! —— 如果 父类之间 存在 同名的属性或者方法 , 应该 尽量避免使用多继承 。
推荐阅读
- 李玟|45岁李玟风格“释放天性”,当看完这组照片后,网友:真羡慕你老公!
- 胖小企鹅|看完这两点,我赶紧扔下手机去和宝宝聊聊天!
- 中小学▲小学生课上偷偷“传纸条”,被老师截胡,看完内容差点笑出鼻涕泡
- 开往未来的列车|对比iOS 14,为什么网友偏爱ColorOS?看完这几点发现后者真香
- 北石同学|为什么没人敢动孟婆?看完她的丈夫和父亲,你就懂了!,三界之中
- 悠家娱乐 VS Code 中的 Python 体验,#新闻拍一拍# 微软推出 Pylance,改善
- C罗|21世纪足坛最佳阵容出炉!梅罗+大罗小罗 巴萨皇马包揽11人
- 篮球怪谈|乔丹的小腿你就懂了,怎样才算得上是顶级的天赋?看完小卡的大手
- 篮球怪谈|乔、科、詹、库谁在中国的人气最高?看完他们的中国行你就懂了
- Python1行代码实现Python数据分析:图表美观清晰,自带对比功能丨开源
