Pythonクラスとオブジェクト
Pythonクラス/オブジェクト
Pythonはオブジェクト指向のプログラミング言語です。
Pythonのほとんどすべてのものは、プロパティとメソッドを備えたオブジェクトです。
クラスは、オブジェクトコンストラクター、またはオブジェクトを作成するための「設計図」のようなものです。
クラスを作成する
クラスを作成するには、キーワードclass
を使用します。
オブジェクトの作成
これで、MyClassという名前のクラスを使用してオブジェクトを作成できるようになりました。
__init__() 関数
上記の例は、最も単純な形式のクラスとオブジェクトであり、実際のアプリケーションではあまり役に立ちません。
クラスの意味を理解するには、組み込みの__init__()関数を理解する必要があります。
すべてのクラスには__init__()という関数があり、クラスの開始時に常に実行されます。
__init__()関数を使用して、オブジェクトのプロパティに値を割り当てるか、オブジェクトの作成時に実行する必要があるその他の操作を行います。
例
Personという名前のクラスを作成し、__init__()関数を使用して名前と年齢の値を割り当てます。
class Person:
def init(self, name, age):
self.name = name
self.age = age
p1 = Person("ジョン", 36)
print(p1.name)
print(p1.age)
注意:init()関数は、クラスが新しいオブジェクトの作成に使用されるたびに自動的に呼び出されます。
__str__()関数
__str__()関数は、クラスオブジェクトが文字列として表される場合に何を返すかを制御します。
__str__()関数が設定されていない場合、オブジェクトの文字列表現が返されます。
例
__str__()関数を使用しないオブジェクトの文字列表現:
class Person:
def init(self, name, age):
self.name = name
self.age = age
p1 = Person("ジョン", 36)
print(p1)
例
__str__()関数を使用したオブジェクトの文字列表現:
class Person:
def init(self, name, age):
self.name = name
self.age = age
def str(self):
return f"{self.name}({self.age})"
p1 = Person("ジョン", 36)
print(p1)
オブジェクトメソッド
オブジェクトにはメソッドを含めることもできます。オブジェクト内のメソッドは、オブジェクトに属する関数です。
Personクラスにメソッドを作成しましょう。
例
あいさつを出力する関数を挿入し、p1オブジェクトで実行します。
class Person:
def init(self, name, age):
self.name = name
self.age = age
def myfunc(self):
print("こんにちは、私の名前は" + self.name)
p1 = Person("ジョン", 36)
p1.myfunc()
注意:self
パラメータは、クラスの現在のインスタンスへの参照であり、クラスに属する変数にアクセスするために使用されます。
selfパラメータ
self
parameter は、クラスの現在のインスタンスへの参照であり、クラスに属する変数にアクセスするために使用されます。
self
という名前を付ける必要はなく、好きな名前を付けることができますが、クラス内の関数の最初のパラメータである必要があります。
例
selfの代わりにmysillyobjectとabcという単語を使用します。
class Person:
def init(mysillyobject, name, age):
mysillyobject.name = name
mysillyobject.age = age
def myfunc(abc):
print("こんにちは、私の名前は" + abc.name)
p1 = Person("ジョン", 36)
p1.myfunc()
オブジェクトプロパティの変更
次のように、オブジェクトのプロパティを変更できます。
オブジェクトプロパティの削除
del
キーワードを使用して、オブジェクトのプロパティを削除できます。
オブジェクトの削除
del
キーワードを使用してオブジェクトを削除できます。
passステートメント
class
定義を空にすることはできませんが、何らかの理由でコンテンツのないclass
定義がある場合は、エラーの発生を避けるためにpass
ステートメントを含めてください。
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。