コンストラクタメソッド (__init__)
CoddyのPythonジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 7/64。
__init__ メソッドは、新しいオブジェクトを作成したときに自動的に実行される特別なメソッドです。オブジェクトの属性を初期化します。
こちらはコンストラクターを持つクラスの例です:
class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breed__init__ method は parameters を受け取り、self using してそれらをインスタンス attributes に割り当てます。
コンストラクターを使用してオブジェクトを作成します:
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)が与えられています。この課題では、1つのファイルで Book クラスを定義し、それを別のファイルでインポートして使用します。
あなたの課題は次のとおりです:
book.pyのBookクラスを完成させ、title、author、pages属性を初期化する__init__メソッドを実装するdriver.pyファイルは、あなたのBookクラスをインポートして使用し、"Harry Potter" by "J.K. Rowling" with 400 pagesの book object を作成します
book.py の詳細な TODO コメントに従ってください。
自分で試してみよう
# 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")このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
オブジェクト指向プログラミングのすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ