いくつかのサンプル コードをつなぎ合わせようとしていますが、意味がよくわからない部分に遭遇しました。ソース全体を含めずに、重要なセクションと思われるものをターゲットにしようとします。うまくいけば、すべてを取得できます。
ここで、彼はカスタム dict サブクラスを宣言しています。私が考えたのは、クラス変数「customer」と「film」です。(1 つのクラスからこれらを設定すると、すべてのインスタンスでそれらを更新する必要がありますか?)
class Payment(dict):
customer = film = None
そして、ここで彼は支払いを使用します...
columns = [item[0] for item in cursor.description]
payments = []
for row in cursor.fetchall():
payment = Payment(zip(columns, row)) #I believe this is where he loads dict items
payment.customer = customers[payment["customer_id"]] #This is where he assigns 'class variable'
payment.film = films[payment["film_id"]]
payments.append(payment)
最後のリストでは、すべての「支払い」が同じ値を持つべきではありませんか (これは別の辞書であることがわかります)。これが私の混乱の原因です。
これら 2 つの属性は全体的に一意の値を持っていることがわかりました。これは Dict のサブクラス化と関係がありますか? 値は参照されているのではなく、コピーされています (技術的にはクラス変数ですが、コピーされているため、一意のままです)。
単純なオブジェクト指向の仕組みを理解したと思ったとき、これは私を投げます...