Python-继承封装多态

这篇具有很好参考价值的文章主要介绍了Python-继承封装多态。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

介绍

与java一样Python是一种支持面向对象编程的高级编程语言,它的核心思想之一就是继承、封装和多态。这三个概念是面向对象编程中最基本、最核心的思想之一,也是Python编程中必须掌握的知识点之一

继承

在面向对象编程中,继承是指一个类(称为子类)从另一个类(称为父类)继承其属性和方法。子类可以继承父类的所有属性和方法,并可以根据需要添加新的属性和方法。继承可以减少代码重复,提高代码的复用性和可维护性。

在python中是可以多继承的

案例
class IDictService:
    def getInfoById(self, i):
        print('需要子类实现')


class Log:

    def info(self, msg):
        print('[info]: %s' % msg)


class DictServiceImpl(IDictService, Log):
    def getInfoById(self, i):
        super().getInfoById(i)
        return i


dict = DictServiceImpl()

dict.info(dict.getInfoById(123))

# 通过该方法可以查看继承的类与顺序
print(DictServiceImpl.__mro__)

运行结果

需要子类实现
[info]: 123
(<class '__main__.DictServiceImpl'>, <class '__main__.IDictService'>, <class '__main__.Log'>, <class 'object'>)
封装

封装是面向对象编程中的一个重要概念,它允许我们将属性和方法绑定在一起,并将其隐藏在对象内部。通过这种方式,我们可以防止外部程序直接访问和修改对象的属性,从而保护对象的完整性和安全性。

在python中私有方法和属性通过两个下划线表示__

案例
class Person:
    def __init__(self):
        self.__age = 10
        self.name = 'wendell'

    def getAge(self):
        return self.__age

    def __print(self):
        print("-----test--------")


p = Person()
print(p.name)
print(p.getAge())

# 私有属性也是不安全的,只不过是加了个类前缀做了隐藏
p._Person__age = 20
print("被修改了", p.getAge())

# 不可以访问
# AttributeError: 'Person' object has no attribute 'age'
print(p.__age)
# AttributeError: 'Person' object has no attribute '__print'
print(p.__print())

运行结果

wendell
10
被修改了 20
Traceback (most recent call last):
  File "/Users/wendell/PycharmProjects/study/oop/class_private.py", line 23, in <module>
    print(p.age)
AttributeError: 'Person' object has no attribute '__age'

从上面的结果可以看出加了__后,对象里面就不会有这个属性了,python里面是通过加了个类前缀做了隐藏,从而实现私有属性的,但是不建议这么去访问
如p._Person__age

多态

多态允许我们使用相同的接口来操作不同的对象。通过这种方式,我们可以编写通用的代码,可以处理多种不同类型的对象,从而使代码更加灵活、可重用和可扩展。

案例
# 多态
class Dog:

    def color(self):
        print("默认颜色")


class RedDog(Dog):

    def color(self):
        print('红色dog')


class YellowDog(Dog):

    def color(self):
        print('黄色dog')


class Unknow(Dog):
    pass


yellow = YellowDog()
red = RedDog()
unknow = Unknow()


def print_color(dog):
    dog.color()


print_color(yellow)
print_color(red)
print_color(unknow)

执行结果

黄色dog
红色dog
默认颜色

上面案例中的 print_color 方法接受一个参数,这个参数没有定义死,而是随着运行时传入的不同对象而执行对应的方法。这就是多态,通过多态,我们可以编写通用的代码,可以处理多种不同类型的对象

总结

总之掌握面向对象这三个概念,我们可以编写更加优雅、健壮和可维护的Python代码。


欢迎关注,学习不迷路!文章来源地址https://www.toymoban.com/news/detail-402222.html

到了这里,关于Python-继承封装多态的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • c、c++、java、python、js对比【面向对象、过程;解释、编译语言;封装、继承、多态】

    目录 内存管理、适用 区别 C 手动内存管理:C语言没有内置的安全检查机制,容易出现内存泄漏、缓冲区溢出等安全问题。 适用于系统级编程 C++ 手动内存管理:C++需要程序员手动管理内存,包括分配和释放内存,这可能导致内存泄漏和指针错误。 适用于游戏引擎和系统级编

    2024年02月08日
    浏览(76)
  • Python-面向对象:面向对象、成员方法 、类和对象、构造方法、魔术方法、封装、继承、类型注解、多态(抽象类(接口))

    当前版本号[20230806]。 版本 修改说明 20230806 初版 生活中数据的组织 学校开学,要求学生填写自己的基础信息,一人发一张白纸,让学生自己填, 易出现内容混乱 但当改为登记表,打印出来让学生自行填写, 就会整洁明了 程序中数据的组织 在程序中简单使用变量来记录学

    2024年02月14日
    浏览(52)
  • 封装、继承、多态

    封装是面向对象的特征之一,是对象和类概念的主要特性。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。 封装,是把客观对象变成抽象的类的过程,在这个过程中,抽象出具体对象的特征

    2024年02月12日
    浏览(45)
  • python 面向对象编程的特点 - 封装 - 继承(经典类、新式类) - 多态 - 静态方法、类方法 - 下划线的使用 - 回合制攻击游戏实验

    目录 面向对象编程的特点: 封装:封装是将数据和操作(方法)封装在一个对象中的能力 继承:继承是指一个类(子类)可以继承另一个类(父类)的属性和方法。 我们为什么需要继承呢? 父类/基类 = ATM 子类/派生类= ChinaATM/ICBCATM ATM系统父类子类讲解代码: 经典类和新式

    2024年02月15日
    浏览(49)
  • Java三大特性:封装、继承、多态

    高内聚,低耦合 高内聚:类内部操作自己完成,不允许外部干涉。 低耦合:仅暴露少量的方法给外部使用。 封装(数据的隐藏) 通常应禁止直接访问一个对象中数据的实际表达,而应该通过操作接口来访问,这称为信息的隐藏。 封装的特点 1.提高程序的安全性,保护数据

    2024年03月21日
    浏览(47)
  • 面向对象(类/继承/封装/多态)详解

    面向对象编程(Object-Oriented Programming,OOP)是一种广泛应用于软件开发的编程范式。它基于一系列核心概念,包括类、继承、封装和多态。在这篇详细的解释中,我们将探讨这些概念,并说明它们如何在PHP等编程语言中实现。 类是OOP的基础。它是一种用于创建对象的蓝图或模

    2024年02月08日
    浏览(63)
  • Java 封装 继承 多态(深入理解)

    登神长阶 第二阶 封装 继承 多态 🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀 目录 🍒一.面向对象编程的三大特性 🍍二.封装 🧉1.定义及其作用  🥝2.访问限定符 🫛3.封装扩展 包(package) 🥕3.1.定义及其作用  🥦 3.2.导入包的类 🍔3.3.自定义包 🌯

    2024年03月11日
    浏览(97)
  • 【C# 基础精讲】继承、封装、多态

    继承(Inheritance)、封装(Encapsulation)和多态(Polymorphism)是面向对象编程中的三大核心概念,它们构成了面向对象编程的基础,有助于创建更加模块化、可扩展和可维护的代码。这三个概念在C#及其他面向对象编程语言中广泛应用,本文将详细解释这三个概念的含义、特点

    2024年02月12日
    浏览(41)
  • Java面向对象 - 封装、继承和多态

    目录 第1关:什么是封装,如何使用封装 第2关:什么是继承,怎样使用继承 第3关:super的使用 第4关:方法的重写与重载 第5关:抽象类 第6关:final的理解与使用 第7关:接口 第8关:什么是多态,怎么使用多态 Java_Educoder

    2024年02月07日
    浏览(80)
  • C#封装、继承和多态的用法

    大家好,今天我们将来详细探讨一下C#中封装、继承和多态的用法。作为C#的三大面向对象的特性,这些概念对于程序员来说非常重要,因此我们将对每个特性进行详细的说明,并提供相应的示例代码。 封装是指将数据和方法包裹在类中,同时通过访问修饰符来控制对这些数

    2024年02月06日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包