كيفية تحديد خصائص الفصل في بايثون
في بايثون، يمكنك إضافة توابع إلى فصل دراسي باستخدام مصمم @classmethod. ولكن هل هناك آلية مماثلة لتحديد خصائص الفئة؟
بالتأكيد. توفر بايثون مصمم الديكور @classproperty لهذا الغرض. يشبه بناء الجملة واستخدامه إلى حد كبير صياغة @classmethod:
class Example(object): the_I = 10 @classproperty def I(cls): return cls.the_I
يقوم مصمم @classproperty بإنشاء خاصية فئة تسمى I. يمكنك الوصول إلى هذه الخاصية مباشرة على الفئة نفسها، كما يلي:
Example.I # Returns 10
إذا كنت ترغب في تحديد محدد لخاصية صفك، يمكنك استخدام @classproperty.setter Decorator:
@I.setter def I(cls, value): cls.the_I = value
الآن يمكنك تعيين خاصية الفئة مباشرة:
Example.I = 20 # Sets Example.the_I to 20
المنهج البديل: ClassPropertyDescriptor
إذا كنت تفضل أسلوبًا أكثر مرونة، ففكر في استخدام فئة ClassPropertyDescriptor. وإليك كيفية العمل:
class ClassPropertyDescriptor(object): def __init__(self, fget, fset=None): self.fget = fget self.fset = fset # ... (method definitions) def classproperty(func): return ClassPropertyDescriptor(func)
باستخدام هذا الأسلوب، يمكنك تحديد خصائص الفئة على النحو التالي:
class Bar(object): _bar = 1 @classproperty def bar(cls): return cls._bar
يمكنك تعيين خاصية الفئة باستخدام أداة ضبطها (إذا تم تحديدها) أو عن طريق تعديل السمة الأساسية الخاصة بها:
Bar.bar = 50 Bar._bar = 100
يوفر هذا الحل الموسع مزيدًا من التحكم والمرونة عند العمل مع خصائص الفصل في Python.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3