[解決済み] なぜクラス__dict__はmappingproxyなのですか?
2023-02-01 22:33:23
質問
私は、なぜクラス
__dict__
は
mappingproxy
のインスタンスですが
__dict__
は単なる
dict
>>> class A:
... pass
>>> a = A()
>>> type(a.__dict__)
<class 'dict'>
>>> type(A.__dict__)
<class 'mappingproxy'>
どのように解決するのですか?
これは、クラスレベルの属性とメソッドのキーが文字列のみであることをインタプリタが保証するのに役立ちます。
他の点では、Pythonは"consenting adults language"であり、オブジェクトのためのdictsはユーザーによって公開され、変更可能であることを意味します。 しかし、クラスレベルの属性やクラスのメソッドの場合、キーが文字列であることを保証できれば、クラスレベルの属性やメソッドの検索のためのコモンケースのコードを簡素化し、高速化することができます。 特に、新スタイルのクラスに対する __mro__ 検索ロジックは、クラス dict のキーが文字列であると仮定することで、簡略化および高速化されます。
関連
-
[解決済み] 割り当て後にリストが予期せず変更されました。その理由と防止策を教えてください。
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] Pythonで静的なクラス変数は可能ですか?
-
[解決済み] モジュールの関数名(文字列)を使って、モジュールの関数を呼び出す。
-
[解決済み] インスタンスのクラス名を取得する?
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] Pythonのクラスはなぜオブジェクトを継承するのですか?
-
[解決済み] 自分」という言葉は何のためにあるのか?
-
[解決済み] mixinとは何か、なぜ有用なのか?
-
[解決済み] django.db.migrations.exceptions.InconsistentMigrationHistory
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pythonの構文に新しいステートメントを追加することはできますか?
-
[解決済み] googletransがエラー 'NoneType' オブジェクトに 'group' 属性がない、と言って動かなくなった。
-
[解決済み] バブルソートの宿題
-
[解決済み] Pythonのインスタンス変数とクラス変数
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] tensorflowのCPUのみのインストールでダイナミックライブラリ 'cudart64_101.dll' を読み込めなかった
-
[解決済み] Celeryタスクのユニットテストはどのように行うのですか?
-
[解決済み] 単純な文字列からtimedeltaオブジェクトを作成する方法
-
[解決済み] Alembicアップグレードスクリプトでインサートやアップデートを実行するにはどうすればよいですか?
-
[解決済み] Pythonのクラスの__dict__.__dict__属性とは何ですか?