Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

🐍 Python OOP チートシート

Python Basics: Object-Oriented Programming クエストで学んだ内容のクイックリファレンスです。


1. クラスとオブジェクト

クラスの定義

class Person:
    def __init__(self, name, age):
        self.name = name      # パブリック属性
        self.age = age        # パブリック属性

    def greet(self):
        print(f"Hello, my name is {self.name} and I am {self.age} years old.")

オブジェクトの作成

p1 = Person("John", 30)
p1.greet()   # Hello, my name is John and I am 30 years old.

2. 属性とメソッド

  • 属性 = オブジェクトに属する変数(self.attribute
  • メソッド = オブジェクトに属する関数(def method(self):

アクセス方法:

print(p1.name)   # 属性
p1.greet()       # メソッド

3. 継承

基本的な継承

class Animal:
    def __init__(self, name):
        self.name = name

    def sound(self):
        print("Some generic sound")

class Dog(Animal):
    def sound(self):
        print("Woof woof!")

dog = Dog("Rex")
dog.sound()  # Woof woof!

4. super()

親クラスのコンストラクタを呼ぶ

class Dog(Animal):
    def __init__(self, name, breed):
        super().__init__(name)   # Animalの__init__を呼び出す
        self.breed = breed

5. メソッドのオーバーライド

子クラスは親クラスのメソッドを置き換えられます:

class Cat(Animal):
    def sound(self):
        print("Meow!")

6. プライベート属性とメソッド

__ を使ってプライベートとしてマーク

class Person:
    def __init__(self, name, age):
        self.name = name
        self.__age = age  # プライベート属性

    def __print_age(self):  # プライベートメソッド
        print(self.__age)

    def show_info(self):
        print(self.name)
        self.__print_age()

プライベートメンバーに直接アクセスするとエラーになります:

p = Person("Alice", 25)
p.__age         # ❌ AttributeError
p._Person__age  # ✅ 動作するが推奨されません

7. 重要なOOP用語

用語 意味
Class オブジェクトの設計図です。
Object クラスのインスタンスで、固有のデータを持ちます。
Attribute オブジェクト内の変数。
Method クラス内の関数。
Constructor オブジェクト作成時に呼ばれる特別なメソッド __init__
Inheritance 他のクラスのコードを再利用する仕組み。
Overriding 親クラスのメソッドを再定義すること。
super() 親クラスのメソッドを呼び出します。
Private 内部用を示すために __ で始まるメンバー。

8. 簡単なベストプラクティス

  • クラス名には PascalCase を使う:MyClass
  • self は現在のオブジェクトを指す
  • メソッドは一つの責務に集中させる
  • 内部の詳細にはプライベートメンバーを使う
  • 子クラスで __init__ をオーバーライドしたら super().__init__() を呼ぶ
  • 継承は目的を持って賢く使う — ただ単に使うのは避ける

📌 覚えておくこと: OOPは名詞(もの)とその振る舞いを考えることです。 現実の概念をモデル化し、コードを整理し、再利用を意識しましょう。