Pythonのお勉強 Part62 (454レス)
Pythonのお勉強 Part62 http://mevius.5ch.net/test/read.cgi/tech/1568616071/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
249: デフォルトの名無しさん [] 2020/06/19(金) 00:00:07.20 ID:NJwW7ejS python 使い始めて数年だけども、今日初めて知ったことがあるので質問させてください。 python のクラスって、インスタンスを生成した後に、勝手にメンバー変数を定義できちゃうものなんですか? もし、それがよく知られている機構なのであれば、一般的に何と呼ばれているのか教えてください。 例) >>> class myClass(): ... pass ... >>> c1 = myClass() >>> dir(c1) ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__'] >>> c1.hoge = 'hogehoge' >>> c1.hoge 'hogehoge' >>> dir(c1) ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'hoge'] また、こう言ったことをさせないためには、どうすれば良いのでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1568616071/249
250: デフォルトの名無しさん [sage] 2020/06/19(金) 00:46:41.82 ID:2U294rNY >>249 よく知られてる機構だけど特別な名前が付いてるわけではない 後から変更させたくないなら@dataclass(frozen=True)を使えば良いと思う http://mevius.5ch.net/test/read.cgi/tech/1568616071/250
256: デフォルトの名無しさん [] 2020/06/19(金) 14:11:20.02 ID:GhHOGZr1 >>249 そのための__setattr__() http://mevius.5ch.net/test/read.cgi/tech/1568616071/256
259: 249 [] 2020/06/28(日) 01:25:43.97 ID:wIxce2FJ みなさん、ありがとうございます。 このモンキーパッチングが役に立つ場面ってどんなところなんでしょ? 自分で思いつく限りでは、そこそこ規模の大きいプロジェクトでのユニットテストで 不具合に対する対処で一時的にメソッドを書き換えてみたりとか、デバッグ用にフィールドを 追加してみたりとか、そんなことしか思いつかんです… http://mevius.5ch.net/test/read.cgi/tech/1568616071/259
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.026s