Pythonでクラスとオブジェクトを使用したコード
``` class Dog: # コンストラクタ def __init__(self, name, breed, age): self.name = name self.breed = breed self.age = age def bark(self): print("ワンワン!") dog1 = Dog("桃", "ゴールデンレトリバー", 3) dog2 = Dog("太郎君", "秋田犬", 5) print(dog1.name) print(dog2.breed) dog1.bark() dog2.bark() ```
■GoogleColaboratory(Python 3.9.16、2023年3月20日)
今回は、Dogというクラスを定義。そして、クラス内にはコンストラクタと呼ばれる特殊なメソッドを定義します。コンストラクタのメソッド名は、__init__となります。__init__メソッドは、オブジェクトが作成された際に一度だけ呼び出されます。このメソッドを使用することで、オブジェクトに初期値を設定することができます。
コンストラクタと呼ばれる特殊なメソッドを定義後、括弧内には、クラス内のメソッドで渡される最初の引数,パラメータは、オブジェクト自体でなければならないため、「self(自己)」と記述し、最初の引数として渡します。その後、第2,第3,第4の引数,パラメータとして、name、breed、ageを設定します。そして、これら引数,パラメータを受け取り、self.**(name、breed、age)属性が初期化されます。また、Dogというクラスを使用してオブジェクトを作成すると、__init__メソッドが自動的に呼び出されます。
コンストラクタの引数,パラメータを設定した後は、def文を用いてbarkメソッドを定義します。そして先ほど同じように括弧内には、クラス内のメソッドで渡される最初の引数,パラメータは、オブジェクト自体でなければならないため、「self(自己)」と記述し、最初の引数として渡します。このメソッドが呼び出されたときに、print()を用いて文字列を出力させるという処理を実行します。
メソッドを定義後、dog1,dog2という変数を用意し、それぞれにDog()を格納し、インスタンス化を行います。インスタンス化によりオブジェクトが作成されたことで、クラス内に定義したメソッドにアクセスできるようになりました。その後、括弧内に、今回定義したクラス内の属性を操作するために、値を引数,パラメータとして渡します。
渡した後に、dog1のオブジェクトに対しては、ドット演算子( . )を用いnameの属性にアクセス。アクセス後、print()で属性の情報を出力します。次にdog2のオブジェクトに対しては、ドット演算子( . )を用いbreedの属性にアクセス。アクセス後、print()で属性の情報を出力します。
最後に、dog1,dog2というオブジェクトでドット演算子( . )を用い、bark()メソッドを呼び出します。
コード(セル)を記述し実行してみると、オブジェクトを作成し、属性の取得、メソッドを呼び出し処理の結果を出力できました。