الصنف العلوي (بالإنجليزية: 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}"