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日
    浏览(73)
  • Python-面向对象:面向对象、成员方法 、类和对象、构造方法、魔术方法、封装、继承、类型注解、多态(抽象类(接口))

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2024年02月07日
    浏览(77)
  • Java系列——封装、继承、多态初了解

    目录 一、前言 二、封装 1.什么是封装?   2.封装的特点 3.封装的使用 三、继承 1.什么是继承? 2.继承的特点 3.继承的优点 4.继承的使用  4.1 继承的格式  4.2 继承的演示 4.3 成员变量 4.4 成员方法 4.5 构造方法 五、多态 1.什么是多态? 2.多态的特点 3.多态的使用  4.引用类型

    2024年02月08日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包