"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > خدعة بايثون: استخدام فئات البيانات مع الحقل (default_factory=...)

خدعة بايثون: استخدام فئات البيانات مع الحقل (default_factory=...)

تم النشر بتاريخ 2024-11-02
تصفح:917

Python Trick: Using dataclasses with field(default_factory=...)

تعمل وحدة فئات البيانات في بايثون على تبسيط عملية إنشاء الفئات المستخدمة لتخزين البيانات.

بينما يعرف معظم الأشخاص عن الاستخدام الأساسي، هناك حقل ميزات أقل شهرة (default_factory=...) يمكن أن يكون مفيدًا بشكل لا يصدق للتعامل مع القيم الافتراضية في الأنواع القابلة للتغيير.


كيف يعمل

عند تحديد فئة بيانات، قد ترغب في استخدام قيمة افتراضية قابلة للتغيير، مثل قائمة أو قاموس.

يمكن أن يؤدي استخدام افتراضي قابل للتغيير مباشرة إلى سلوك غير متوقع بسبب الطريقة التي تتم بها مشاركة الوسائط الافتراضية عبر المثيلات.

توفر وظيفة default_factory طريقة نظيفة للتعامل مع الإعدادات الافتراضية القابلة للتغيير.

إليك مثال بسيط:

from dataclasses import dataclass, field
from typing import List


@dataclass
class Student:
    name: str
    grades: List[int] = field(default_factory=list)  # Use default_factory for mutable default


# Create new Student instances
student1 = Student(name="Alice")
student2 = Student(name="Bob", grades=[90, 85])

# Modify student1's grades
student1.grades.append(95)

print(student1)  # Output: Student(name='Alice', grades=[95])
print(student2)  # Output: Student(name='Bob', grades=[90, 85])


# Output:
# Student(name='Alice', grades=[95])
# Student(name='Bob', grades=[90, 85])

في هذا المثال، تتم تهيئة الدرجات بقائمة فارغة لكل مثيل طالب جديد.
باستخدام field(default_factory=list) يضمن حصول كل مثيل على قائمته المنفصلة، ​​وتجنب مخاطر الإعدادات الافتراضية المشتركة القابلة للتغيير.


لماذا هذا رائع؟

تعد ميزة default_factory لا تقدر بثمن لتجنب المشكلات الشائعة المتعلقة بالوسيطات الافتراضية القابلة للتغيير.

يساعد على التأكد من أن كل مثيل لفئة البيانات له قيمته الافتراضية الخاصة، مما يجعل التعليمات البرمجية الخاصة بك أكثر قابلية للتنبؤ بها وتجنب الأخطاء الدقيقة المتعلقة بالحالة المشتركة.

بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/devasservice/python-trick-using-dataclasses-with-fielddefaultfactory-4159?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3