クラス/アトリビュート/スロット/カプセル化/プロパティ/継承 [Python]
目次
1. クラスとアトリビュート
2. スロット
3. コンストラクタとメソッド
4. カプセル化(アクセス制限)
5. プロパティ
6. 継承
7. 演算子のオーバーロード
※サンプルコードの「---」以下は出力結果です。
1. クラスとアトリビュート
# クラス定義
class MyClass:
pass
# クラスの生成
obj= MyClass()
# アトリビュートの追加
obj.value = 12345
# アトリビュートからデータを取得する
obj.value
---
12345
クラスにメソッドや処理がない場合には「pass」を定義します。アトリビュートはPython版のクラスメンバのようなものです。自由に追加できて読み書き可能です。
2. スロット
スロット機能を使用すると追加できるアトリビュートを制限できます。
class MyClass:
# aとbのアトリビュートのみを許可する
__slots__ = ['a','b']
obj= MyClass()
obj.a = 1
obj.b = 2
obj.c = 3 # ここでエラーになる
---
AttributeError
3. コンストラクタとメソッド
class MyClass:
# コンストラクタ(メソッド)
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
# メソッド
def calc(self):
return self.a + self.b + self.c
obj= MyClass(10,20,30)
obj.calc()
---
60
コンストラクタ、メソッド
第一引数は必ず「self」にする必要があります。この「self」は自動的にインストタンスが代入されます。selfはクラスのメソッドやアトリビュートにアクセス可能です。
4. カプセル化(アクセス制限)
Pythonでカプセル化するにはアトリビュート/メソッド名の先頭に「_」または「__」を付加するだけです。アンダーバー1個はクラス内部用であると宣言。アンダーバー2個はより厳しく制限するという違いがあります。
5. プロパティ
class MyClass:
def __init__(self):
# アトリビュート
self._x = 0
# ゲッターの定義
def getX(self):
return self._x
# セッターの定義
def setX(self, value):
self._x = value
# プロパティの定義
x = property(getX, setX)
obj= MyClass()
obj.x = 10
obj.x
---
10
6. 継承
class Parent:
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
self.d = 777
def output(self):
return self.d
# 継承
class Child(Parent):
def __init__(self, a, b, c):
# 親クラスのコンストラクタを呼び出す
super().__init__(a,b,c)
print("Childのコンストラクタ")
def xxx(self):
print (888)
obj= Child(1,2,3)
obj.output()
---
Childのコンストラクタ
777
今回は1つの継承ですが、Pythonでは多重継承が可能です。また、継承によるメソッドのオーバーライドは完全に上書きされます。必要であればsuper()で親クラスのメソッドを実行する必要があります。
上記の例では16行目で親クラスのコンストラクタを呼び出さないと、24行目でエラー(dのアトリビュートが存在しない)となります。
7. 演算子のオーバーロード
class MyClass:
def __init__(self, value):
self.value = value
# 特殊メソッド
def __add__(self, obj):
return self.value + int(obj)
obj= MyClass(10)
obj + 1
---
11
公式の解説:数値型をエミュレーションする
スポンサーリンク
関連記事
公開日:2018年07月02日 最終更新日:2021年02月25日
記事NO:02688
プチモンテ ※この記事を書いた人
![]() | |
![]() | 💻 ITスキル・経験 サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。 画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ |
| 🎵 音楽制作 BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は抒情詩、抒情的な楽曲が多い。楽曲制作は🔰2023年12月中旬 ~ | |









