Python クラスとオブジェクト
Note: Pythonはオブジェクト指向プログラミング言語です。
目次
Python クラス/オブジェクト
Pythonではほとんどすべてがオブジェクトであり、それぞれがプロパティとメソッドを持っています。
クラスはオブジェクトのコンストラクタのようなものであり、「オブジェクトを作成するための設計図」です。
クラスの作成
クラスを作成するには、キーワード class
を使用します:
例
class MyClass:
x = 5
オブジェクトの作成
今度は、MyClass
というクラスを使用してオブジェクトを作成できます:
例
p1 = MyClass()
print(p1.x)
__init__() 関数
上記の例はクラスとオブジェクトの基本的な形であり、実際のアプリケーションではあまり役立ちません。
クラスの意味を理解するには、組み込みの __init__()
関数を理解する必要があります。
すべてのクラスには、クラスが初期化されるときに常に実行される __init__()
関数があります。
__init__()
関数を使用して、オブジェクトのプロパティに値を割り当てたり、オブジェクトが作成されるときに必要なその他の操作を行います:
例
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("John", 36)
print(p1.name)
print(p1.age)
Note: __init__()
関数は、クラスが新しいオブジェクトを作成するたびに自動的に呼び出されます。
__str__() 関数
__str__()
関数は、クラスオブジェクトが文字列として表現されるときに返す内容を制御します。
__str__()
関数が設定されていない場合、オブジェクトの文字列表現が返されます:
例
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("John", 36)
print(p1)
例
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"{self.name}({self.age})"
p1 = Person("John", 36)
print(p1)
オブジェクトメソッド
オブジェクトはメソッドを含むこともできます。オブジェクト内のメソッドは、オブジェクトに属する関数です。
次に、Person
クラスにメソッドを作成します:
例
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def myfunc(self):
print("Hello my name is " + self.name)
p1 = Person("John", 36)
p1.myfunc()
Note: self
パラメータは、クラスの現在のインスタンスへの参照であり、クラスに属する変数にアクセスするために使用されます。
self パラメータ
self
パラメータはクラスの現在のインスタンスへの参照であり、クラスに属する変数にアクセスするために使用されます。
これは self
という名前でなくても構いませんが、クラス内のすべての関数の最初のパラメータである必要があります:
例
class Person:
def __init__(mysillyobject, name, age):
mysillyobject.name = name
mysillyobject.age = age
def myfunc(abc):
print("Hello my name is " + abc.name)
p1 = Person("John", 36)
p1.myfunc()
オブジェクトのプロパティの変更
次のようにしてオブジェクトのプロパティを変更できます:
例
p1.age = 40
オブジェクトのプロパティの削除
del
キーワードを使用してオブジェクトのプロパティを削除できます:
例
del p1.age
オブジェクトの削除
del
キーワードを使用してオブジェクトを削除できます:
例
del p1
pass ステートメント
クラス定義は空にすることはできませんが、何らかの理由で内容のないクラス定義がある場合は、エラーを避けるために pass
ステートメントを挿入します。
例
class Person:
pass