Python 入门教程(7)面向对象 | 7.1、类与对象


前言:

义对象类型的基本构造。类是对象的蓝图或模板,它封装了数据(属性)和与这些数据相关的操作(方法)。通过类,可以创建具有特定属性和行为的对象,这些对象在程序中扮演着重要角色。下面,将详细探讨Python中类的定义、使用以及相关的概念。

一、类与对象

1、类定义

在Python中,使用class关键字来定义类。类定义以冒号结束,随后是一个缩进的代码块,其中包含了类的成员,例如:

class MyClass:  
    # 类属性(通常使用静态变量)  
    class_variable = "I am a class variable"  
  
    def __init__(self, name, age):  
        # 实例属性(通过self参数赋值)  
        self.name = name  
        self.age = age  
  
    def greet(self):  
        # 实例方法  
        print(f"Hello, my name is {self.name} and I am {self.age} years old.")  
  
# MyClass是类名,它定义了一个包含实例属性和方法的模板

2、实例化

类实例化是创建类对象的过程。在Python中,通过类名后跟一对圆括号(可选地包含传递给__init__方法的参数)来创建类的实例。

# 创建MyClass的实例  
my_instance = MyClass("Alice", 30)  
  
# 访问实例属性和调用实例方法  
print(my_instance.name)  # 输出: Alice  
my_instance.greet()      # 输出: Hello, my name is Alice and I am 30 years old.

3、类特殊方法

3.1、构造与析构

  • __init__(self, ...) 类的构造函数,当创建类的新实例时自动调用。它用于初始化对象的状态。
  • __del__(self) 析构函数,当对象被销毁时自动调用。它通常用于执行清理操作,如关闭文件或释放资源。
  • __new__(cls, ...) 是一个静态方法,用于创建类的实例。__new____init__之前被调用,通常用于控制对象的创建过程。

3.2、字符串与表示

  • __str__(self) 定义对象的字符串表示形式,当使用print()函数或str()函数时调用。
  • __repr__(self) 定义对象的“官方”字符串表示形式,通常用于调试目的。如果__str__没有被定义,则print()函数会调用__repr__
  • __format__(self, format_spec) 允许对象使用格式化字符串字面量或str.format()方法进行格式化。

4、类构造函数

在 Python 中,类默认会生成一个构造函数,即 __init__ 方法,但前提是开发者没有显式定义它。以下是详细说明:

4.1、默认构造函数的行为

  • 如果类中没有显式定义 __init__,Python 会自动提供一个默认的构造函数。
  • 这个默认的 __init__ 方法不带参数(除了 self),且不执行任何操作,仅用于初始化实例。
  • 所有实例属性需要后续手动添加(例如通过直接赋值)。
class MyClass:
    pass

obj = MyClass()  # 调用默认构造函数,无报错

4.2、显式定义构造函数

  • 如果显式定义了 __init__,Python 会使用用户定义的版本,覆盖默认行为。
  • 此时可以自定义初始化逻辑(如接收参数、设置属性等)。
class MyClass:
    def __init__(self, value):
        self.value = value

obj = MyClass(10)  # 调用自定义构造函数
print(obj.value)   # 输出: 10

5、总结

Python的类提供了一种强大而灵活的方式来定义和组织代码。通过类,可以创建具有复杂结构和行为的对象,从而实现更加模块化、可维护和可重用的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值