0
点赞
收藏
分享

微信扫一扫

Java中巧用 parseInt 实现高效数值变换,进制转换

悲催博士僧 2024-11-03 阅读 33

python类和对象

3.属性和方法

        3.6初始化方法/构造方法

         在Python中,构造方法(也称为初始化方法)是一个特殊的方法,用于在创建对象时初 始化对象的属性。这个方法在类定义中使用__init__来表示。当你创建类的新实例时,__init__方法会自动被调用,从而允许你为对象设置初始状态或执行其他必要的启动任务。

以下是一个简单的Python类示例,该类包含一个构造方法

3.7魔法方法 

        在Python中,魔术方法(也称为特殊方法或双下划线方法)是一类具有特殊意义的方法,它们的名称前后都包含两个下划线(例如,__init____str____add__等)。这些方法为Python对象提供了丰富的功能,允许对象以特定的方式响应内置函数和操作符。

以下是一些常见的Python魔术方法及其用途:

下面是一些例子帮助理解:

 4.继承/派生

        在Python中,继承是一种面向对象编程(OOP)的特性,它允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和方法。通过继承,子类可以重用父类的代码,同时还可以添加或覆盖父类的功能。

4.1基本用法

        要创建一个子类,你需要使用class关键字,并在类名后面的括号中指定父类。如果父类在当前模块或内置模块中,你可以直接写类名。如果父类在另一个模块中,你需要使用模块名加点号再加类名的方式。

4.2多重继承

        Python支持多重继承,即一个子类可以继承多个父类。多重继承可能会导致一些复杂的问题,比如方法名冲突(也称为菱形继承问题),但是Python的MRO算法通常能够很好地处理这些问题。

4.3 覆盖 override

  • 覆盖是指在有继承关系的类中,子类中实现了与基类同名的方法,在子类的实例调用该方法时,实际调用的是子类中的覆盖版本,这种现象叫覆盖

  • 作用:

    • 实现和父类同名,但功能不同的方法

  • 覆盖示例

5.封装 

        在Python中,封装(Encapsulation)是面向对象编程(OOP)的一个核心概念。它主要涉及到将对象的属性和方法结合在一起,并隐藏对象的内部实现细节,只对外暴露必要的接口。这样做的目的是增加代码的安全性和可维护性,同时减少不同部分之间的依赖。

  1. 隐藏内部实现:类的内部细节(如属性和方法)被隐藏起来,不对外部直接可见。这通常通过名称修饰(name mangling)或双下划线前缀(__)来实现,尽管Python并没有真正的私有变量或方法,但这是一种约定俗成的做法。

  2. 提供公共接口:类通过提供公共方法(也称为接口)来与外部世界交互。这些方法是类的外部用户唯一可以调用的。

  3. 保护对象状态:封装允许类控制对其属性的访问,从而保护对象的状态不被随意修改。这可以通过getter和setter方法来实现,它们分别用于获取和设置属性值。

在Python中,虽然没有严格的访问控制(如Java中的privateprotectedpublic关键字),但可以通过使用双下划线前缀

6.多态

        在Python中,多态(Polymorphism)是面向对象编程(OOP)的一个核心概念,它允许不同的类对象通过相同的接口调用方法。多态性主要分为编译时多态(也称为静态多态或方法重载)和运行时多态(也称为动态多态或方法重写)。Python主要支持的是运行时多态,这是通过继承和方法重写来实现的。

6.1多的基本概念

        多态意味着“多种形态”,在编程中,它允许一个接口或父类引用指向子类对象,并通过这个引用调用在子类中重写的方法。这样做的好处是,可以在不改变客户端代码的情况下,通过替换不同的子类来实现不同的行为。

6.2Python中的多态实现      

        在Python中,多态通常是通过继承和方法重写来实现的。以下是一个简单的例子:

7.方法重写

        在Python中,方法重写(Method Overriding)是面向对象编程(OOP)中的一个重要概念。它允许子类提供一个特定的实现,该实现会覆盖(或重写)在父类中定义的同名方法。这样做的目的是允许子类根据自身的需要定制或扩展父类的行为。

7.1方法重写的基本步骤

  1. 定义一个父类,并在其中声明一个或多个方法。这些方法可以是具体的实现,也可以是抽象方法(在Python中,抽象方法通常通过在父类中引发NotImplementedError异常来模拟)。

  2. 创建一个子类,该子类继承自父类。

  3. 在子类中重写父类中定义的同名方法。这意味着子类提供了一个新的实现,该实现将替换父类中的实现。

以下是一个简单的Python示例,展示了方法重写的基本用法:

7.2 内建函数重写

  • __abs__ abs(obj) 函数调用

  • __len__ len(obj) 函数调用

  • __reversed__ reversed(obj) 函数调用

  • __round__ round(obj) 函数调用

  • 内建函数 重写示例

7.3运算符重载

  • 运算符重载是指让自定义的类生成的对象(实例)能够使用运算符进行操作

  • 运算符重载的作用

    • 让自定义类的实例像内建对象一样进行运算符操作

    • 让程序简洁易读

    • 对自定义对象将运算符赋予新的运算规则

  • 运算符重载说明:

    • 运算符重载方法的参数已经有固定的含义,不建议改变原有的意义

  • 算术运算符重载示例

 8.super函数

        在Python中,super()函数是用于调用父类(超类)的一个方法。它常用于多继承的环境中,以确保每个父类都被正确地初始化,并且允许子类扩展或重写父类的方法。super()解决了直接调用父类方法时可能遇到的名称解析问题,特别是在复杂的继承链中。

8.1基本用法

        当在子类中调用super()时,它会返回当前类的父类的一个临时对象,允许你调用该父类的方法。这通常用于__init__方法来确保父类被正确初始化。

8.2多继承中的用法

        在多继承的情况下,super()函数按照方法解析顺序(MRO,Method Resolution Order)来调用父类的方法。MRO是一个定义了在调用一个方法时应该搜索哪个类的顺序的算法。

8.3注意事项

        总之,super()是Python中一个非常有用的特性,它简化了在继承环境中对父类方法的调用,并帮助避免了由于直接调用父类方法而可能导致的错误。

举报

相关推荐

0 条评论