我正在尝试拼凑一些示例代码,但遇到了一些对我来说不太有意义的问题。在不包括整个源代码的情况下,我将尝试针对我认为重要的部分,希望我能全部了解。
在这里,他声明了一个自定义 dict 子类,我认为应该是类变量“customer”和“film”。(例如,从一个类中设置这些,应该在所有情况下更新它们,是吗?)
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)
在最终列表中,所有“付款”不应该具有相同的值(结果是另一个字典)吗?这就是我的困惑所在。
事实证明,这两个属性具有全面的独特价值。这是否与子类化字典有关?值是否被复制而不是被引用(所以从技术上讲,它们是类变量,但由于它们被复制,它们继续保持唯一)。
就在我以为我理解了简单的 OO 机制时,这让我……