صنف علوي

الصنف العلوي (بالإنجليزية: metaclass)‏ أو الصنف ذاتي الوصف في البرمجة الكائنية، هو صنف تكون مثيلاته أصناف. تمامًا كما يحدد الصنف العادي سلوك كائنات معينة، يحدد الصنف العلوي سلوك أصناف معينة ومثيلاتها. لا تدعم جميع لغات البرمجة الكائنية الأصناف العلوية. من بين تلك اللغات التي تستخدم الصنف العلوي، يختلف مدى التجاوز الصنف العلوي لأي جانب معين من جوانب سلوك الأصناف. يمكن تنفيذ الصنف العلوي من خلال جعل الطبقات مواطنين من الدرجة الأولى، وفي هذه الحالة يكون الصنف العلوي ببساطة كائنًا يبني الأصناف. كل لغة لها بروتوكول كائن علوي خاص بها، ومجموعة من القواعد التي تحكم كيفية تفاعل الكائنات والأصناف و الأصناف العلوية.[1]

مثال بايثون

في بايثون، الصنف المضمنtype هو صنف علوي.[2][3][4] على سبيل المثال هذا الصنف البسيط:

class Car:
  def __init__(self, make: str, model: str, year: int, color: str) -> None:
    self.make = make
    self.model = model
    self.year = year
    self.color = color

  @property
  def description(self):
    """Return a description of this car."""
    return f"{self.color} {self.year} {self.make} {self.model}"

انظر أيضًا

المراجع

  1. ^ Ira R. Forman and Scott Danforth (1999). Putting Metaclasses to Work. ISBN:0-201-43305-2.
  2. ^ IBM Metaclass programming in Python, parts 1 نسخة محفوظة 2008-09-03 على موقع واي باك مشين., 2 and 3
  3. ^ Artima Forum: Metaclasses in Python 3.0 (part 1 of 2) (part 2 of 2) نسخة محفوظة 2016-04-09 على موقع واي باك مشين.
  4. ^ David Mertz. "A Primer on Python Metaclass Programming". ONLamp. مؤرشف من الأصل في 2003-04-30. اطلع عليه بتاريخ 2006-06-28.

روابط خارجية