💭

Python100本ノック#1 オブジェクトとクラス

2023/11/26に公開

オブジェクト指向プログラミング (OOP: Object-Oriented Programming)

省略

オブジェクト

  • オブジェクトは「現実のビジネスロジックのアクションエンティティは、1つのオブジェクトに対応しており、その射影」だと理解している。
  • 属性(データ)とメソッド(手続き)という2つの要素を持ったすべてのモノをオブジェクトとする。
  1. オブジェクトは属性(property)を使用してデータを保存する
  2. オブジェクトはメソッド(method)を使用してデータを管理する。

クラス (Class)

Pythonでは、クラスを使ってオブジェクトを定義する。

なぜクラスの概念を導入するか?
クラスは本来、現実世界を模倣するためのものである。よって現実の世界においてすべてのエン
ティティに対応するクラスが存在するはず。

==クラスは同じまたは類似の属性と動作を持つエンティティの集合!==

Pythonではオブジェクトは現実の具体的なエンティティを指すものである。そして、現実の実体が一つのクラスに分類されるならば、OOPにおいてもオブジェクトは一つのクラスに所属すべきである。

オブジェクトの特徴情報はクラスとで決まるが、エンティティによって異なる特徴を持つことになる。例:人間(クラス)である田中は、性別が男、ダンスができる。小林は、性別が女、歌ができる。

クラス (Class)の定義方法

Python3では

class クラス名():
	#属性
	#メソッド

Python2では

class クラス名:
	#属性
	#メソッド

クラスの具現化(インスタンス化)

オブジェクト名 = クラス名()

具体例

#1. クラスを定義
class Person():
    # メソッド
    def eat(self):
        print('和菓子が好き')
    def drink(self):
        print('オレンジジュースが好き')
        
# 2、インスタンス化
tom = Person()
# 3、メソッドの呼び出し
tom.eat()
tom.drink()

self について

インスタンス自身を指す。

class Person():
    def speak(self):
        print(f'selfのアドレス: {self}')
        print('Nice to meet you!')

Jack = Person()
print(f'Jackのアドレス: {Jack}')
Jack.speak()

Mike = Person()
print(f'Mikeのアドレス: {Mike}')
Mike.speak()

実行結果

selfは、インスタンス自身と同じアドレスだとわかる。

Discussion