面向对象——类专有方法;__str__ 方法 __str__ 是一个类的方法,在打印类对象,获取其属性信息时调用。打印一个实例化对象时,默认打印的其实时一个对象的地址,但是我们可以对其进行重载,打印我们想要的信息。例如上面的例子中进行的重载。;看下面两个例子对照;实例方法、类方法、静态方法 方法的主要区别在于参数: 实例方法隐含的参数为类实例 self类方法隐含的参数为类本身 cls静态方法无隐含参数,主要为了类实例也可以直接调用静态方法。 所以逻辑上类方法应当只被类调用,???例方法实例调用,静态方法两者都能调用。主要区别在于参数传递上的区别,实例方法悄悄传递的是self引用作为参数,而类方法悄悄传递的是 cls 引用作为参数。;下面实例展示三种方法 面向对象编程是Python中一种强大的编程范式,它允许我们通过类和对象来组织和抽象代码。在Python中,类的专有方法是特定于类的函数,它们在处理类对象时发挥着关键作用。本节我们将深入探讨`__str__`方法以及实例方法、类方法和静态方法的区别。 `__str__`方法是一个特殊的方法,当我们尝试打印一个类的实例或使用`str()`函数转换对象时,Python会自动调用这个方法。默认情况下,打印的对象会显示其内存地址,但通过重载`__str__`方法,我们可以定制打印的内容,提供更友好的输出。例如: ```python class Person: def __init__(self, name, age): self.name = name self.age = age def __str__(self): return f'Name: {self.name}, Age: {self.age}' p = Person('张三', 26) print(p) # 输出:Name: 张三, Age: 26 ``` 接下来,我们来看实例方法、类方法和静态方法的区别。这三种方法都是定义在类中的,但它们的参数和调用方式有所不同。 - **实例方法**:通常用于处理与特定实例相关的数据。它们的第一个参数通常是`self`,代表调用该方法的对象实例。例如,上面的`__str__`方法就是一个实例方法。 ```python class MyClass: def instance_method(self): print('实例方法') my_obj = MyClass() my_obj.instance_method() # 输出:实例方法 ``` - **类方法**:类方法通过`@classmethod`装饰器定义,第一个参数是`cls`,代表类自身,而不是实例。类方法常用于与类有关的计算或修改,而不是具体的实例。类方法可以由类或其实例调用。 ```python class MyClass: @classmethod def class_method(cls): print('类方法') MyClass.class_method() # 输出:类方法 my_obj = MyClass() my_obj.class_method() # 输出:类方法 ``` - **静态方法**:静态方法不接收`self`或`cls`作为参数,主要用于封装与类或实例无关的辅助功能。它们通过`@staticmethod`装饰器定义,可以直接通过类或其实例调用。 ```python class MyClass: @staticmethod def static_method(): print('静态方法') MyClass.static_method() # 输出:静态方法 my_obj = MyClass() my_obj.static_method() # 输出:静态方法 ``` 理解这些方法的区别对于编写可读性好、可维护性强的面向对象Python代码至关重要。根据需要选择合适的方法类型,可以帮助我们更好地组织代码,并使类的行为更加清晰。在实际开发中,我们可能会结合使用这三种方法,以实现复杂的功能并保持代码的整洁。通过熟练掌握这些面向对象的特性,开发者能够编写出更加灵活和高效的Python程序。
- 粉丝: 373
- 资源: 1万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Qt框架的3D点云与模型可视化系统.zip
- JAVA的SpringBoot企业级进销存ERP管理系统源码 java进销存源码数据库 MySQL源码类型 WebForm
- (源码)基于Python的学生管理系统.zip
- 图片oraclemysal
- java人力资源HR管理系统源码数据库 MySQL源码类型 WebForm
- BT_esp32_370_DRV8833_BALANCE_verticalPID_turnPID.ino
- buildroot package使用示例
- C#ASP.NET快速开发平台源码带视频教程和操作手册数据库 SQL2008源码类型 WebForm
- 23网安六徐少方 20237209.cpp
- 多多买菜自动入库,拼多多自动入库使用