Pythonでクラスを作成するとき、コメントの場所、スーパークラスのコンストラクタ呼び出し、デストラクタの名前、withに対応させるメソッド名など、いろいろ忘れてしまう。
雛型を作ろう。
Pythonクラス雛形
class MyClass(object):
'''私の作るクラス。ここにクラスのコメントを記述する。
このコメントがクラスの説明として表示される。
objectを継承しているが、この記述は省略可能。
'''
def __init__(self, x, y):
''' コンストラクタ。ここにメソッドのコメントを記述する。
Args:
x (str): xxxx
y (str): yyyy
'''
self.x = x
self.y = y
self.file1 = self.__open('file1.txt', 'a')
self.file2 = None
def __del__(self):
'''デストラクタ。終了処理を書く。
ただしクラス開放のタイミングはPython任せになる。
'''
self.file1.close()
def __enter__(self):
'''withブロックが開始した時に呼び出されるメソッド。
ここでオープン処理を行う。
selfをreturnする必要がある。
'''
self.file2 = self.__open('file2.txt', 'a')
return self
def __exit__(self, exc_type, exc_val, exc_th):
'''withブロックが終了した時に呼び出されるメソッド。
ここでクローズ処理を行う。
引数を4つ取る必要がある。
'''
self.file2.close()
def __open(self, filename, open_mode):
''' アンダースコア2つのメソッドは、外から呼べなくなる。
プライベートメソッドを定義したいときはこうする。
Args:
filename (str): file nema.
open_mode (str): file open mode.
Returns:
stream: file stream
'''
return open(filename, open_mode)
def write(self, msg):
''' 通常の公開メソッド。引数の説明を書くと親切。
Args:
msg (str): メッセージ
'''
self.file1.write(msg + '\n')
if self.file2:
self.file2.write(msg + '\n')
def __str__(self):
'''str()したときに呼ばれるメソッド。
インスタンスを単純にプリントした時に表示されるので、
デバッグ時に役立つ。
'''
return 'X[{}] Y[{}]'.format(self.x, self.y)
def __repr__(self):
'''repr()したときや、インタラクティブシェルで書き出した時に
呼び出されるメソッド。
eval()でオブジェクトになるように記述する。
定義しておくとデバッグ時に役立つ。
'''
return '''MyClass('{}', '{}')'''.format(self.x, self.y)
class MyClassClass(MyClass):
'''MyClassを継承したクラス
'''
def __init__(self, x, y, z):
'''コンストラクタ。
'''
# スーパークラスのコンストラクタを呼び出す方法
super(MyClassClass, self).__init__(x, y)
self.z = z
def __str__(self):
return 'X[{}] Y[{}] Z[{}]'.format(self.x, self.y, self.z)
def __repr__(self):
return '''MyClassClass('{}', '{}', '{}')'''.format(
self.x, self.y, self.z)
まとめ
これで次からクラスを作る度に調べる必要がなくなる。
同じタグの記事
- BOM付きUTF-8からBOMを除去するpython
- jythonのヒープメモリ設定
- Kotlin1.2.50がリリースされていた
- macOSをHigh Sierraに更新した。スクリプト実行環境のバージョンは変わったのか
- macOSをMojaveに更新した。スクリプト実行環境のバージョンは変わったか
- pathlib.Pathを調べる
- pyenvでpython環境をインストール
- pyenvとvirtualenvでpython環境を構築
- python unpack
- python3で数値のlistを文字列のlistに変換
同じカテゴリの記事