Menu
CoddyTech

构造方法 (__init__)

本课属于 Coddy Python 学习旅程的“面向对象编程”单元。第 7 课,共 64 课。

__init__ 方法是一种特殊方法,在你创建新对象时会自动运行。它会初始化对象的属性。

下面是一个带有构造函数的类示例:

class Dog:
    def __init__(self, name, breed):
        self.name = name
        self.breed = breed

__init__ 方法接收参数,并使用 self 将它们赋值给实例属性。

使用构造函数创建对象:

rex = Dog("Rex", "German Shepherd")
buddy = Dog("Buddy", "Golden Retriever")

调用 Dog("Rex", "German Shepherd") 时,Python 会自动调用 __init__ 并传入参数。

访问由构造函数设置的属性:

print(rex.name)
print(rex.breed)
print(buddy.name)
print(buddy.breed)

输出:

Rex
German Shepherd
Buddy
Golden Retriever

你也可以使用带默认值的构造函数:

class Cat:
    def __init__(self, name, age=1):
        self.name = name
        self.age = age

# 创建猫对象
fluffy = Cat("Fluffy", 3)
whiskers = Cat("Whiskers")  # age 的默认值为 1

print(f"{fluffy.name} is {fluffy.age} years old")
print(f"{whiskers.name} is {whiskers.age} years old")

输出:

Fluffy is 3 years old
Whiskers is 1 years old

要点:创建对象时,__init__ 方法会确保对象使用初始数据正确完成设置。这样你就不必在创建对象后手动设置属性。

challenge icon

挑战

简单

给你提供了用于实现图书管理系统的 Python 文件(book.py 和 driver.py)。在这个挑战中,你将在一个文件中定义 Book 类,然后在另一个文件中导入并使用它。

你的任务是:

  • 在 book.py 中完善 Book 类,添加一个 __init__ 方法,用于初始化 title、author 和 pages 属性
  • driver.py 文件会导入并使用你的 Book 类,创建一本书,信息为 "Harry Potter" by "J.K. Rowling" with 400 pages

按照 book.py 中详细的 TODO 注释进行操作。

亲手试试

# TODO: 从 book.py 导入 Book 类
# 使用以下格式:from book import Book

# TODO: 创建一个名为 'my_book' 的图书对象,并设置以下值:
# - title: "Harry Potter"
# - author: "J.K. Rowling"
# - pages: 400
# 示例:my_book = Book("Title", "Author", pages)

# 打印图书详情
# TODO: 确保运行到这一行之前已正确定义 my_book
print(f"'{my_book.title}' by {my_book.author}, {my_book.pages} pages")
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

面向对象编程中的所有课

自己练习: Python 在线编译器