クラスとは、オブジェクト指向プログラミングで利用する、属性(データ)とメソッドを組み合わせたブロックです。
本記事では、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!
まとめ
Pythonのクラス定義を紹介しました。
Pythonのクラス定義は
- 属性とメソッドを定義できる
- インスタンス変数を定義できる
- 継承を利用できる
- クラス変数を定義できる
- プライベート変数を定義できる
Pythonではクラス定義で、クラス変数とインスタンス変数、継承、プライベート変数やメソッドを定義できます。
オブジェクト指向プログラミングで必要な構文なので、理解して利用できるようにしましょう。