Menu
Coddy logo textTech

コンストラクタメソッド (__init__)

CoddyのPythonジャーニー「Object Oriented Programming」セクションの一部 — レッスン 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.pydriver.py)が提供されています。このチャレンジでは、一方のファイルでBookクラスを定義し、それをもう一方のファイルでインポートして使用します。

あなたのタスクは以下の通りです:

  • book.py内のBookクラスを完成させ、titleauthor、およびpages属性を初期化する__init__メソッドを作成してください。
  • driver.pyファイルは、あなたのBookクラスをインポートして使用し、"Harry Potter" by "J.K. Rowling" with 400 pagesの書籍オブジェクトを作成します。

book.py内の詳細なTODOコメントに従ってください。

チートシート

__init__メソッドは、新しいオブジェクトを作成する際に自動的に実行され、その属性を初期化するコンストラクタです:

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

引数を指定してクラスを呼び出すことで、オブジェクトを作成します:

rex = Dog("Rex", "German Shepherd")
print(rex.name)  # Rex
print(rex.breed)  # German Shepherd

コンストラクタは、デフォルトのパラメータ値を持つことができます:

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

fluffy = Cat("Fluffy", 3)
whiskers = Cat("Whiskers")  # ageのデフォルトは1

自分で試してみよう

# TODO: book.pyからBookクラスをインポートします
# 次の形式を使用してください: from book import Book

# TODO: 次の値を使用して'my_book'という名前の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腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Object Oriented Programmingのすべてのレッスン