プログラミング言語のPythonを学んでいるのですが、よくわからないことが出てきました。
のような方法で。
def method(self, blah):
def __init__(?):
....
....
self`は何をするものですか? それは何を意味していますか? それは必須ですか?
init` メソッドは何をするものですか? なぜそれが必要なのですか?(などなど)。)
OOPの構成要素かもしれませんが、あまり詳しくは知りません'。
このコードで
class A(object):
def __init__(self):
self.x = 'Hello'
def method_a(self, foo):
print self.x + ' ' + foo
... self
変数はオブジェクト自身のインスタンスを表しています。 ほとんどのオブジェクト指向言語では、これをオブジェクトに定義されたメソッドの隠しパラメータとして渡しますが、Pythonではそうしません。 明示的に宣言しなければなりません。 A`クラスのインスタンスを作成して,そのメソッドを呼び出すと, ... のように自動的に渡されます.
a = A() # We do not pass any argument to the __init__ method
a.method_a('Sailor!') # We only pass a single argument
initメソッドは、Pythonではおおよそコンストラクタを表すものです。 A()
を呼び出すと、Pythonはオブジェクトを作成し、それをinitメソッドの最初のパラメータとして渡します。 追加のパラメータ(例えば、
A(24, 'Hello')`)も引数として渡されます。この場合、コンストラクタはそれらを期待していないので、例外が発生します。
その通り、これらはOOPの構造体です。
init` はクラスのコンストラクタです。 self "パラメータはオブジェクトのインスタンスを指します(C++の "this "のようなもの)。
class Point:
def __init__(self, x, y):
self._x = x
self._y = y
init`メソッドは、オブジェクトのメモリが割り当てられるときに呼び出されます。
x = Point(1,2)
オブジェクトと一緒に値を持続させたい場合は、オブジェクトのメソッド内で self
パラメータを使用することが重要です。 例えば、__init__
メソッドを次のように実装したとします。
class Point:
def __init__(self, x, y):
_x = x
_y = y
xと
yのパラメータはスタック上の変数に格納され、initメソッドがスコープ外に出ると破棄されてしまいます。 これらの変数を
self._xと
self._yと設定することで、これらの変数は
Point` オブジェクトのメンバとして設定されます(オブジェクトのライフタイム中はアクセス可能)。