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

خدعة بايثون: سحر __الفتحات__

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

Python Trick: The Magic of __slots__

تعد مرونة Python مع السمات الديناميكية إحدى نقاط قوتها، ولكن في بعض الأحيان تريد تحسين استخدام الذاكرة والأداء.

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


كيف يعمل

عادةً، يتم تنفيذ كائنات Python كقواميس لتخزين السمات، مما قد يؤدي إلى استهلاك أعلى للذاكرة.

من خلال تحديد الفتحات في صفك، فإنك تقوم بإرشاد بايثون لاستخدام بنية داخلية أكثر كفاءة في الذاكرة.

يعد هذا مفيدًا بشكل خاص عندما تعرف السمات التي سيتمتع بها الفصل الدراسي مسبقًا وتريد تجنب الحمل الزائد لقاموس كامل.

إليك عرض توضيحي لكيفية استخدام الفتحات:

class Point:
    __slots__ = ['x', 'y']  # Define the allowed attributes

    def __init__(self, x, y):
        self.x = x
        self.y = y


# Create a Point instance
p = Point(10, 20)

print(p.x)  # Output: 10
print(p.y)  # Output: 20

# Attempting to add a new attribute will raise an AttributeError
try:
    p.z = 30
except AttributeError as e:
    print(e)  # Output: 'Point' object has no attribute 'z'

# Output:
# 10
# 20
# 'Point' object has no attribute 'z'

في هذا المثال، تقوم الفتحات بتقييد فئة النقطة على سمات x وy فقط.

محاولة تعيين أي سمة غير مدرجة في الفتحات تؤدي إلى خطأ في السمة.


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

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

يمكنه أيضًا تحسين سرعة الوصول إلى السمات.

ومع ذلك، كن حذرًا: الفتحات يمكن أن تحد من بعض القدرات الديناميكية لكائنات Python وقد لا تكون مناسبة لجميع حالات الاستخدام.

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/devasservice/python-trick-the-magic-of-slots-578j?1 إذا كان هناك أي انتهاك، فيرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3