【Python入門】オブジェクト指向をマスターしよう!

Pythonオブジェクト指向について詳しく説明します。

オブジェクト指向プログラミングは、コードの構造化、再利用性、拡張性を改善するために役立ちます。

初心者の方でも理解しやすいよう、例コードを交えながら解説します

時短でプログラミングを身に付けたいという方は、【完全無料】0円で学べるプログラミングスクールを紹介【超厳選】20代におすすめのプログラミングスクール3選!を参考にしてください。

クラスとインスタンス

Pythonでは、classキーワードを使用してクラスを定義します

クラスは設計図のようなもので、実際のオブジェクトはクラスから作られるインスタンスによって表現されます。

class Dog:
    pass

my_dog = Dog()  # my_dog is an instance of Dog class

メソッドと属性

クラスにはデータを保持する属性と、動作を定義するメソッドがあります。

メソッドはクラス内の関数で、最初の引数として常に自身のインスタンス(通常、selfと呼ばれる)を取ります。

class Dog:
    def __init__(self, name):
        self.name = name  # an attribute

    def bark(self):  # a method
        return f"{self.name} says Woof!"

my_dog = Dog("Rex")
print(my_dog.bark())  # Rex says Woof!

継承とポリモーフィズム

継承を使用すると、既存のクラスの属性とメソッドを新しいクラスに引き継ぐことができます。

ポリモーフィズムは、子クラスが親クラスと同じインターフェース(メソッド名とパラメータ)を持つことを保証し、コードの再利用と拡張性を改善します。

class Animal:
    def speak(self):
        return "..."

class Dog(Animal):
    def speak(self):
        return "Woof!"

my_animal = Animal()
my_dog = Dog()

for animal in [my_animal, my_dog]:
    print(animal.speak())

カプセル化と隠蔽

カプセル化は、クラスの内部データを隠蔽し、外部から直接アクセスすることを防ぐことを意味します。

これにより、クラスの内部実装を自由に変更でき、外部のコードに影響を与えることなくバグを防ぐことが可能となります。

class Dog:
    def __init__(self, name):
        self._name = name  # private attribute

    @property
    def name(self):  # getter method
        return self._name

    @name.setter
    def name(self, new_name):  # setter method
        if isinstance(new_name, str):
            self._name = new_name
        else:
            raise ValueError("Name must be a string.")

my_dog = Dog("Rex")
my_dog.name = "Max"  # it's safe to change the name

【まとめ】オブジェクト指向を習得してコードを簡潔に書こう!

この記事では、Pythonオブジェクト指向について解説しました。

今後も一緒に学んでいきましょう!

最後までお読みいただき、ありがとうございました!

Tech Academy

  • 受講者数No.1のプログラミングスクール
  • 通過率10%の選考に合格した優秀な講師
  • カリキュラムを閲覧制限なし
  • コースの種類が豊富
  • オンラインで完結
  • 無料体験あり
  • 無料カウンセリングあり
  • 学割あり

\ 公式サイトはこちら /

Tech Academy 公式サイト