Pythonのコンストラクタ__init__メソッドの仕組みと使い方を徹底解説
__init__とは何か
「__init__」はPythonクラスにおける予約済みの特殊メソッドで、オブジェクト指向プログラミング(OOP)の概念では「コンストラクタ」と呼ばれます。このメソッドは、クラスからインスタンス(オブジェクト)が生成される瞬間に自動的に呼び出され、クラスの属性を初期化する重要な役割を担います。
__init__の主な特徴
- オブジェクト生成時に自動的に実行される
- 第一引数には必ず「self」(自分自身のインスタンス)を指定する
- 戻り値を返すことはできない(None以外を返すとTypeErrorが発生する)
__init__の使い方
ここでは例として、「Car(車)」というクラスを作成してみましょう。Carクラスには「color(色)」「model(モデル)」「speed(速度)」といった属性を持ち、「start(発進)」「accelerate(加速)」「change_gear(ギア変更)」などのメソッドを持たせることができます。
コード例
class Car(object):
def __init__(self, model, color, speed):
self.color = color
self.speed = speed
self.model = model
def start(self):
print("started")
def accelerate(self):
print("accelerating...")
def change_gear(self, gear_type):
print("gear changed")このように、コンストラクタである__init__メソッドを使用することで、インスタンス生成時に必要な属性へ値を渡し、あらかじめ初期化しておくことができます。
実際の使用例
my_car = Car("SUV", "red", 0)
print(my_car.model) # SUV
print(my_car.color) # red上記のように「Car(...)」と記述した時点で__init__が自動的に呼び出され、引数として渡した値がself経由で各属性に格納されます。これにより、同じクラスから生成された複数のオブジェクトが、それぞれ異なる状態(属性値)を持つことが可能になります。
-
Pythonの正規表現における\B(非単語境界)の動作を解説
Pythonの正規表現における \B の意味とは?正規表現の \b は「単語境界」を表すメタ文字で、片側が単語構成文字(通常は英字・数字・アンダースコア)であるような位置にマッチします。一方、今回解説する \B はその逆で、「\b がマッチしないすべての位置」、つまり単語境界ではない位置にマッチします。\B の動作を確認するサンプルコード以下のコードは、re.findall() を使って正規表現 \Bcat がどのように動作するかを示したものです。import re result = re.findall(r\Bcat, certificate) result2 = re.findall(r
-
Pythonにおけるアンダースコア(_)の意味と使い方をわかりやすく解説
Pythonでは、アンダースコア(_)は特別な役割を持つ記号です。一見ただの文字に見えますが、実際にはインタープリタの動作や命名規則、数値リテラルの表記など、さまざまな場面で重要な働きをします。この記事では、Pythonでアンダースコアが使われる主な5つのケースを、コード例とともにわかりやすく解説します。1. インタープリタで直前の式の値を保持するPythonの対話モード(インタープリタ)では、直前に評価した式の結果が、特別な変数「_」に自動的に格納されます。計算結果をすぐに再利用したいときに非常に便利です。使用例>>> 12 + 10 22 >>> _ 2