__init__ は、Python クラスの特別なメソッド (特別なメソッド) であり、コンストラクターとも呼ばれます。これは、クラスのインスタンス化 (オブジェクトの作成) 中に自動的に呼び出され、オブジェクトのプロパティを初期化し、その他の必要な設定を実行します。
コンストラクターの完全な名前は __init__() です。名前には前後に 2 つの二重アンダースコアがあることに注意してください。これは、特別なメソッドであることを示す Python の命名規則です。その定義は通常、クラス宣言内にあり、クラスの初期状態を記述するために使用されます。
クラスとコンストラクターの例:
class MyClass:
def __init__(self, name, age=0):
self.name = name
self.age = age
# 创建对象实例,并传递必需参数
obj1 = MyClass("Alice")
# 创建对象实例,并传递必需参数和可选参数
obj2 = MyClass("Bob", age=30)
上記の例では、MyClass クラスには 2 つのパラメーター name と age を受け入れるコンストラクター __init__ があり、age のデフォルト値は 0 です。オブジェクト obj1 を作成するときに、必要なパラメーター名を渡すと、age にはデフォルト値 0 が使用されます。オブジェクト obj2 を作成したときに、必須のパラメーター名とオプションのパラメーター age を渡しました。コンストラクターでは、self.name と self.age が渡された値に設定され、オブジェクトのプロパティが初期化されます。
例:
class Person:
def __init__(self, name, age=0):#如果不声明age的值,默认为0
self.name = name
self.age = age
# 创建一个Person对象,传递name和age参数
person1 = Person("Alice") #默认age=0
# 创建一个Person对象,传递不同的name和age参数
person2 = Person("Bob", 25)
# 访问对象的属性
print(person1.name) # 输出: "Alice"
print(person2.age) #输出:"0"
print(person2.name) # 输出: "Bob"
print(person2.age) # 输出: 25
上の例では、コンストラクター __init__ が 2 つのパラメーター name と age を受け入れる Person クラスを定義しました。person1 および person2 オブジェクトを作成すると、コンストラクターは渡されたパラメーターをオブジェクトのプロパティとして設定します。その後、オブジェクトのプロパティにアクセスして、オブジェクトの状態を取得および変更できます。
別の例を見てみましょう。
class EvalState:
def __init__(self, image, depth=0):
# 初始化EvalState对象时,传入图像(image)和深度(depth)两个参数,并将它们保存在对象的属性中
self.image = image
self.depth = depth
self.stopped = False
まさにおっしゃるとおり、このコードは EvalState というクラスを定義しており、そのクラスにはコンストラクター __init__ があります。
このクラスとコンストラクターについてさらに説明しましょう。
クラス名: EvalState はクラスの名前で、EvalState クラスの定義を作成することを意味します。このクラスは、評価ステータスを表すために使用されるデータ構造であってもよい。
コンストラクター: init (self, image, Depth=0) は、EvalState クラスのコンストラクターです。コンストラクターは、EvalState クラスのインスタンスが作成されるときに自動的に呼び出され、新しく作成されたオブジェクトを初期化するために使用されます。
パラメーター: コンストラクターは、image と Depth の 2 つのパラメーターを受け入れます。このうち、image は必須パラメータであり、コンストラクタに渡される画像オブジェクト (または画像データ) を表します。Depth はオプションのパラメータであり、デフォルト値は 0 です。オプションのパラメーターは、オブジェクトをインスタンス化するときにこのパラメーターを提供するかどうかを選択できることを意味します。提供されない場合は、デフォルト値が使用されます。
属性: コンストラクター内で、self.image および self. Depth を通じてオブジェクトの属性を設定します。このように、EvalState クラスの各インスタンスは、コンストラクターに渡された画像パラメータと深度パラメータの値に対応する画像属性と深度属性を持つことになります。
その他のプロパティ: コンストラクターは、stopped というプロパティも設定し、False に初期化します。この属性は、オブジェクトの何らかの状態を表すために使用できます。
このクラスのコンストラクターを使用してオブジェクトを作成する例:
class EvalState:
def __init__(self, image, depth=0):
# 初始化EvalState对象时,传入图像(image)和深度(depth)两个参数,并将它们保存在对象的属性中
self.image = image
self.depth = depth
self.stopped = False
image_data=1
# 创建一个EvalState对象,传递image参数,使用默认的depth值(0)
state1 = EvalState(image_data)
# 创建一个EvalState对象,传递image和depth参数
state2 = EvalState(image_data, depth=3)
print(state1.image)# 输出结果为1
print(state1.depth)# 输出结果为0
print(state2.image)# 输出结果为1
print(state2.depth)# 输出结果为3
概要:
__init__ コンストラクターは、オブジェクトの作成時にそのプロパティを初期化するために使用される Python クラスの特別なメソッドです。コンストラクターを通じて、外部から渡されたパラメーターを受け取り、それらを使用してオブジェクトの初期状態を設定し、オブジェクトの作成後に使用可能な状態にすることができます。こうすることで、オブジェクトの作成直後に、オブジェクトのプロパティとメソッドにアクセスして操作できるようになります。