frozen=True مع eq الافتراضي تولد __hash__؛ توليدها لا يضمن نجاح hash في مثالنا. [1] [2]
الخلاصة السريعة
لا؛ حقل القائمة يمنع نجاح النداء هنا. [1] [2]
- frozen=True مع eq الافتراضي تولد __hash__؛ توليدها لا يضمن نجاح hash في مثالنا. [1] [2]
- على CPython 3.12.14، Box تستخدم frozen=True وحقل items بقائمة؛ own=Box([2]). [1] [2]
- Box.__hash__ ليست None؛ لكن hash(own) ترفع TypeError. وجود الطريقة يختلف عن نجاح تنفيذها. [1] [2]
- own.items تبقى بقائمة تضم 2 بعد محاولة الهاش. [1] [2]
- تحكم مستقل: Fixed مجمدة بحقل items من tuple؛ control=Fixed((2,)). hash(control) تنجح وتعيد int. نترك eq وإدراج الحقل في الهاش افتراضيين، بلا طريقة هاش مخصصة. [1] [2]
توليد الطريقة
frozen=True مع eq الافتراضي تولد __hash__؛ توليدها لا يضمن نجاح hash في مثالنا. [1] [2]
كائن بقائمة
على CPython 3.12.14، Box تستخدم frozen=True وحقل items بقائمة؛ own=Box([2]). [1] [2]
طريقة موجودة ونداء فاشل
Box.__hash__ ليست None؛ لكن hash(own) ترفع TypeError. وجود الطريقة يختلف عن نجاح تنفيذها. [1] [2]
from dataclasses import dataclass @dataclass(frozen=True) class Box:items:list own=Box([2]) print(Box.__hash__ is not None) try:hash(own) except TypeError:print("TypeError") print(own.items) [1] [2]

القائمة والتحكم
own.items تبقى بقائمة تضم 2 بعد محاولة الهاش. [1] [2]
@dataclass(frozen=True) class Fixed:items:tuple control=Fixed((2,)) print(type(hash(control)).__name__) [1] [2]
تحكم مستقل: Fixed مجمدة بحقل items من tuple؛ control=Fixed((2,)). hash(control) تنجح وتعيد int. نترك eq وإدراج الحقل في الهاش افتراضيين، بلا طريقة هاش مخصصة. [1] [2]
المراجع
للتوسع: لغات البرمجة.
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
