目 录CONTENT

文章目录

Python 程序设计 - 24. 类与对象

李航
2025-12-09 / 0 评论 / 3 点赞 / 76 阅读 / 0 字

Python 程序设计 - 24. 类与对象

1. 引入

在 Python 中,类和对象是面向对象编程(OOP)的核心概念。通过类,我们可以创建具有特定属性和方法的对象。类提供了一个蓝图,定义了对象的行为,而对象则是类的具体实例。学习如何定义类以及如何创建和使用对象,是掌握 Python 编程的基础。


2. 什么是类与对象?

类(Class)

类是一个模板,定义了对象的结构和行为。类中包含了属性和方法:

  • 属性:对象的特征或数据。
  • 方法:操作数据的函数,描述了对象的行为。

对象(Object)

对象是类的实例。通过类,我们可以创建多个对象,每个对象都有自己独立的属性。


3. 创建类

在 Python 中,类是通过 class 关键字来定义的。类名通常采用大写字母开头的驼峰命名法。

语法:

class ClassName:
    # 类的属性和方法

4. 类的构造方法 - __init__

__init__() 是一个特殊方法,它在创建对象时自动调用,用于初始化对象的属性。这个方法通常用来为对象赋初始值。

语法:

class ClassName:
    def __init__(self, 参数1, 参数2):
        self.属性1 = 参数1
        self.属性2 = 参数2
  • self 是指向当前对象的引用,用来访问对象的属性和方法。
  • __init__() 中传入的参数用于初始化对象的属性。

5. 创建对象

对象是通过类名加括号来创建的。当你创建一个对象时,类的 __init__() 方法会被自动调用,并传入相应的参数。

语法:

object_name = ClassName(参数1, 参数2)

6. 示例代码:

下面通过一个简单的例子来展示如何创建类和对象。

示例:

# 定义一个类
class Dog:
    # 构造方法,初始化属性
    def __init__(self, name, age):
        self.name = name  # 对象的名字
        self.age = age    # 对象的年龄

# 创建一个对象
dog1 = Dog("Buddy", 3)

# 访问对象的属性
print(dog1.name)  # 输出 Buddy
print(dog1.age)   # 输出 3

代码说明:

  1. 定义类:定义了一个 Dog 类,其中包含 nameage 两个属性,表示狗的名字和年龄。
  2. 构造方法:在 __init__() 中,初始化了 nameage 两个属性。
  3. 创建对象:通过 dog1 = Dog("Buddy", 3) 创建了 Dog 类的一个对象 dog1,并传入 "Buddy"3 作为参数。
  4. 访问属性:通过 dog1.namedog1.age 可以访问对象的属性,输出狗的名字和年龄。

7. 总结

  • 是对象的蓝图,定义了对象的属性和方法。
  • 对象是类的实例,通过类创建对象时,类的构造方法 __init__() 被自动调用。
  • 使用类和对象,我们可以组织和管理程序中的数据与行为,使代码更加模块化和易于维护。

通过理解类和对象的概念,你将能够构建更加复杂和灵活的程序。


8. 练习题

练习 1

定义一个 Book 类,包含 titleauthor 两个属性,并在 __init__() 方法中初始化这两个属性。创建一个 Book 对象,并输出它的 titleauthor

练习 2

定义一个 Person 类,包含 nameage 两个属性,并定义一个 greet() 方法,打印出 "Hello, my name is {name}."。创建一个 Person 对象,调用 greet() 方法。

练习 3

创建一个 Car 类,包含 brandyear 属性,并在 __init__() 中初始化这两个属性。通过创建一个 Car 对象,输出该车的品牌和年份。

9. 深入理解类与对象的创建

虽然我们已经讲解了类的基本创建和对象的使用,但我们还可以进一步理解类与对象在 Python 中的其他细节和注意事项。下面我们将介绍一些实际应用中的技巧和注意事项,帮助你更好地掌握类与对象的创建和使用。

9.1 类的属性和方法

类中的属性和方法是对象的核心。我们通常将属性视为数据,将方法视为行为。通过类,我们可以组织和管理这些数据和行为。

实例属性与类属性

  • 实例属性:每个对象都有自己独立的属性,通常在 __init__() 方法中定义。每次创建对象时,这些属性都会被初始化。
  • 类属性:类属性是所有对象共享的属性,它们通过类来访问,而不是通过对象。

例子:

class Dog:
    # 类属性
    species = "Canis familiaris"  # 所有狗的共有属性

    def __init__(self, name, age):
        # 实例属性
        self.name = name
        self.age = age

# 创建两个对象
dog1 = Dog("Buddy", 3)
dog2 = Dog("Lucy", 2)

# 访问实例属性
print(dog1.name)  # 输出 Buddy
print(dog2.age)   # 输出 2

# 访问类属性
print(dog1.species)  # 输出 Canis familiaris
print(dog2.species)  # 输出 Canis familiaris

# 修改类属性
dog1.species = "Canis lupus"
print(dog1.species)  # 输出 Canis lupus
print(dog2.species)  # 输出 Canis familiaris (类属性没有改变)

代码说明:

  • species 是类属性,所有对象共享这个属性。
  • nameage 是实例属性,每个对象都有自己独立的这些属性。
  • 通过 dog1.species 访问类属性,发现修改 dog1species 属性并不会影响 dog2

9.2 类方法和静态方法

  • 类方法:类方法是与类绑定的方法,而不是与实例绑定。它们的第一个参数是 cls,表示类本身。使用 @classmethod 装饰器定义。
  • 静态方法:静态方法不会访问类或实例的属性,它们与类无关,只是一个普通函数。使用 @staticmethod 装饰器定义。

例子:

class Dog:
    species = "Canis familiaris"  # 类属性

    def __init__(self, name, age):
        self.name = name
        self.age = age

    # 类方法
    @classmethod
    def describe_species(cls):
        print(f"{cls.species} is a species of dog.")

    # 静态方法
    @staticmethod
    def common_action():
        print("All dogs love to play!")

# 创建对象
dog1 = Dog("Buddy", 3)

# 调用类方法
dog1.describe_species()  # 输出 Canis familiaris is a species of dog.

# 调用静态方法
dog1.common_action()  # 输出 All dogs love to play!

代码说明:

  • describe_species() 是一个类方法,它可以访问类属性 species,并通过 cls 来引用类。
  • common_action() 是一个静态方法,它没有访问任何类或实例的属性。

10. 对象的销毁与垃圾回收

在 Python 中,垃圾回收机制会自动管理内存的分配和回收。当一个对象不再被引用时,它会被销毁。你可以通过 __del__() 方法来定义对象销毁时的行为。

例子:

class Dog:
    def __init__(self, name):
        self.name = name
        print(f"{self.name} has been created.")

    def __del__(self):
        print(f"{self.name} has been destroyed.")

# 创建对象
dog1 = Dog("Buddy")

# 删除对象
del dog1  # 输出 Buddy has been destroyed.

代码说明:

  • __del__() 方法中定义了对象销毁时的行为,输出销毁消息。
  • del dog1 被调用时,Python 会自动调用 __del__() 方法,释放资源。

11. 总结

通过这节课的学习,你应该对类与对象的创建和使用有了更深入的了解。我们涵盖了以下几个要点:

  1. 类与对象:类是对象的蓝图,定义了对象的属性和方法,创建对象时,类的构造方法 __init__() 会自动被调用。
  2. 实例属性与类属性:实例属性是每个对象独有的,而类属性是所有对象共享的。
  3. 类方法与静态方法:类方法与类相关,静态方法与类无关,可以通过类名直接调用。
  4. 对象销毁:Python 会自动管理对象的生命周期,并通过 __del__() 方法在对象销毁时执行自定义操作。

通过理解和掌握这些概念,你可以更好地组织和管理 Python 中的代码,使程序更加模块化、易于维护和扩展。


12. 练习题

练习 1

定义一个 Rectangle 类,包含 lengthwidth 属性,并定义一个方法 area() 来计算矩形的面积。创建一个 Rectangle 对象并输出它的面积。

练习 2

定义一个 Person 类,包含 nameage 两个属性,并创建一个类方法 greet(),打印出 "Hello, my name is {name}, and I am {age} years old."。创建一个 Person 对象并调用 greet() 方法。

练习 3

创建一个 Book 类,包含 titleauthor 属性,并定义一个静态方法 is_valid(),判断给定的书名是否有效(是否包含空格)。创建一个 Book 对象,并调用 is_valid() 方法。


通过这些练习,你将能够更好地理解类与对象的使用,并且能够在实际开发中熟练运用这些技巧。

3

评论区