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に変換
同じカテゴリの記事