私は質問するにはちょっと変わった質問だと思います。
私はジャンゴコードのいくつかの部分を勉強していたが、私はこれまで見たことがないものを見つけた。
Copy Difference Questionと It's usage in dictionaryによれば、同じ参照で2つの辞書を作成できます。ディクショナリシャローコピーを自分自身に設定するのはなぜですか?
質問は、辞書の浅いコピーをそれ自身に設定する目的は何ですか?
コード:
class BaseEngine(object):
# Core methods: engines have to provide their own implementation
# (except for from_string which is optional).
def __init__(self, params):
"""
Initializes the template engine.
Receives the configuration settings as a dict.
"""
params = params.copy()
self.name = params.pop('NAME')
self.dirs = list(params.pop('DIRS'))
self.app_dirs = bool(params.pop('APP_DIRS'))
if params:
raise ImproperlyConfigured(
"Unknown parameters: {}".format(", ".join(params)))
辞書def __init__(self, params):
でparams
がコピーされます。
django.template.backends.base
params = {
'BACKEND' = 'Something',
'DIRS' = 'Somthing Else',
}
params = params.copy()
ではなく、なぜいないので、それを変更するには? – Heartagramir
彼らはそれを変更します。私の答えにこれに関するセクションを追加しました。 –
今私はそれを持っている... それを変更せずにdictを使うために私たちはcopy()を使う。 これはすべてではありません... self.paramsはクラスの新しい変数を作成しません... varをコピーして特定のオブジェクト内で使用し、それと同じオブジェクトです。 – Heartagramir