コンストラクタメソッド (__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__ メソッドは、作成時にすべてのオブジェクトが初期データで適切にセットアップされることを保証します。これにより、オブジェクト作成後に手動で属性を設定する手間が省けます。
チャレンジ
簡単書籍管理システムを実装するために、Pythonファイル(book.pyとdriver.py)が提供されています。このチャレンジでは、一方のファイルでBookクラスを定義し、それをもう一方のファイルでインポートして使用します。
あなたのタスクは以下の通りです:
book.py内のBookクラスを完成させ、title、author、および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")このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。