トップページ > プログラム > 2016年10月21日 > nZioU6Ll

書き込み順位&時間帯一覧

7 位/143 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000002000200000004



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
くだすれPython(超初心者用) その31©2ch.net

書き込みレス一覧

くだすれPython(超初心者用) その31©2ch.net
144 :デフォルトの名無しさん[sage]:2016/10/21(金) 12:05:56.55 ID:nZioU6Ll
次のクラスを使う、ただしフィールドは不変な値(int, str, tupleなど)のみで構成すること
collections.namedtuple (<= 3.4)
typing.NamedTuple (>= 3.5)
くだすれPython(超初心者用) その31©2ch.net
145 :デフォルトの名無しさん[sage]:2016/10/21(金) 12:13:35.87 ID:nZioU6Ll
注意としてはフィールドへの再代入は防げても変数自体への再代入は防げない
これはPythonのほかのオブジェクトでも同じ
くだすれPython(超初心者用) その31©2ch.net
147 :デフォルトの名無しさん[sage]:2016/10/21(金) 16:15:11.73 ID:nZioU6Ll
ああ、データ型と書かれていたので操作が伴わないレコードをイメージしてnamedtupleを挙げた
不変のクラスを作るといっても下の4点を守りつつclass文で定義するだけだよ

フィールドは名前の先頭にアンダースコアを付けて触るなアピールする
外から参照したいフィールドがあるときはpropertyを使ってget操作のみ定義する
__init__()以外のメソッドではフィールドを絶対に書き換えない
フィールドを変更したいときは新しい値でオブジェクトを生成してreturnで返す
くだすれPython(超初心者用) その31©2ch.net
149 :デフォルトの名無しさん[sage]:2016/10/21(金) 16:44:30.79 ID:nZioU6Ll
propertyのそれをやってくれるのがnamedtupleなんだけどね
>>147で失念してたけど後からフィールド付け足しできないように__slots__を指定する必要もあった


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。