MENU
やすひら
やすひらと申します。
長靴を履いたタヌキ(ITエンジニア)です。
モノ作りの楽しさを発信中。
X(旧Twitter)のフォローもお願いします。

[Python]クラス定義

クラスとは、オブジェクト指向プログラミングで利用する、属性(データ)とメソッドを組み合わせたブロックです。
本記事では、Pythonのクラス定義を紹介します。

やすひら

Pythonのクラス定義を紹介します

この記事でわかること
  • クラスとは
  • Pythonのクラス定義
目次

クラスとは

クラスとは、オブジェクト指向プログラミングで利用する、属性(データ)とメソッドを組み合わせたブロックです。
関連するデータとメソッドを1単位とすることで、再利用性や保守性を高めることができます。

Pythonのクラス定義

Pythonのクラス定義を紹介します。

クラス定義

Pythonでは、class文でクラスを定義します。

構文

class [クラス名]:
    def __init__(self, [引数1], [引数2], ...):
        self.属性1 = 引数1
        self.属性2 = 引数2
        ...

    def [メソッド名](self, [引数1], [引数2], ...):
        メソッドの処理

ソースコード

class Tanuki:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def greet(self):
        return f"Hello, I am {self.name}, I am {self.age} years old."

yasuhira = Tanuki("yasuhira", 10)
print(yasuhira.greet())  # 出力: Hello, I am yasuhira, I am 10 years old.

コマンド実行例

$ python3 -B python-class.py
Hello, I am yasuhira, I am 10 years old.

クラス定義として、属性(データ)とメソッドを定義しています。

クラス変数とインスタンス変数

クラス変数は、クラスで共有される変数で、インスタンス変数は固有の変数として扱います。

構文

class [クラス名]:
    [クラス変数] = [値]

    def __init__(self, [引数1], [引数2], ...):
        self.属性1 = 引数1  # インスタンス変数
        self.属性2 = 引数2  # インスタンス変数
        ...

    def [メソッド名](self, [引数1], [引数2], ...):
        メソッドの処理

ソースコード

class Tanuki:
    animal = "tanuki"  # クラス変数

    def __init__(self, name, age):
        self.name = name          # インスタンス変数
        self.age = age

yasuhira = Tanuki("yasuhira", 10)
tanuki = Tanuki("tanuki", 3)

print(Tanuki.animal)    # 出力: tanuki
print(yasuhira.animal)  # 出力: tanuki
print(yasuhira.name)    # 出力: yasuhira
print(tanuki.name)      # 出力: tanuki

コマンド実行例

$ python3 -B python-class-instance.py
tanuki
tanuki
yasuhira
tanuki

クラス変数とインスタンス変数を定義しています。

プライベート変数とメソッド

変数やメソッドの名前の前にアンダースコア(_)を付けることで、プライベートとして扱われることを示すことができます。

構文

class [クラス名]:
    def __init__(self, [引数1], [引数2], ...):
        self._属性1 = 引数1
        self._属性2 = 引数2
        ...

    def [メソッド名](self, [引数1], [引数2], ...):
        メソッドの処理

ソースコード

class Tanuki:
    def __init__(self, name, age):
        self._name = name
        self._age = age

    def greet(self):
        return f"Hello, I am {self._name}, I am {self._age} years old."

yasuhira = Tanuki("yasuhira", 10)
print(yasuhira.greet())  # 出力: Hello, I am yasuhira, I am 10 years old.

コマンド実行例

$ python3 -B python-class-private-variable.py 
Hello, I am yasuhira, I am 10 years old.

プライベート変数を定義しています。

継承

継承を使うと、既存のクラスの属性やメソッドを引き継いだ新しいクラスを定義できます。

構文

class [クラス名]:
    def __init__(self, [引数1], [引数2], ...):
        self.属性1 = 引数1  # インスタンス変数
        self.属性2 = 引数2  # インスタンス変数
        ...

    def [メソッド名](self, [引数1], [引数2], ...):
        メソッドの処理

class [継承クラス名]:
    def [継承メソッド名](self, [引数1], [引数2], ...):
        継承メソッドの処理

ソースコード

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

    def speak(self):
        raise NotImplementedError("Subclasses must implement this method")

class Tanuki(Animal):
    def speak(self):
        return f"{self.name} says Hello!"

yasuhira = Tanuki("yasuhira")

print(yasuhira.speak())  # 出力: yasuhira says Hello!

コマンド実行例

$ python3 -B python-class-inheritance.py
yasuhira says Hello!

Animalクラスを継承して、Tanukiクラスを定義しています。

まとめ

Pythonのクラス定義を紹介しました。

Pythonのクラス定義は
  • 属性とメソッドを定義できる
  • インスタンス変数を定義できる
  • 継承を利用できる
  • クラス変数を定義できる
  • プライベート変数を定義できる

Pythonではクラス定義で、クラス変数とインスタンス変数、継承、プライベート変数やメソッドを定義できます。
オブジェクト指向プログラミングで必要な構文なので、理解して利用できるようにしましょう。

  • URLをコピーしました!
目次