@classmethod و@staticmethod
عرّف الطرق الخاصة بمستوى الفئة والطرق الساكنة باستخدام المزخرفات المناسبة
@classmethod و@staticmethod درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.
مقدمة
الكائن مقابل الفئة مقابل الثابت
class Demo:
def instance(self): return 'instance'
@classmethod
def class_m(cls): return f'class: {cls.__name__}'
@staticmethod
def static_m(): return 'static'
d = Demo()
print(d.instance())
print(Demo.class_m())
print(Demo.static_m())@classmethod كمصنع
class Date:
def __init__(self, y,m,d): self.y,self.m,self.d=y,m,d
@classmethod
def today(cls):
from datetime import date
d = date.today()
return cls(d.year, d.month, d.day)
def __repr__(self): return f'{self.y}-{self.m}-{self.d}'
print(Date.today())@classmethod مع الوراثة
class Animal:
@classmethod
def create(cls, name):
return cls(name)
def __init__(self, name): self.name = name
class Dog(Animal): pass
d = Dog.create('Rex')
print(type(d).__name__, d.name)@staticmethod للأدوات المساعدة
class MathHelper:
@staticmethod
def clamp(value, lo, hi):
return max(lo, min(hi, value))
print(MathHelper.clamp(15, 0, 10))
print(MathHelper.clamp(-5, 0, 10))@staticmethod مقابل دالة الوحدة
class Validator:
@staticmethod
def is_email(s): return '@' in s and '.' in s
print(Validator.is_email('user@example.com'))
print(Validator.is_email('not-an-email'))الاستدعاء من كائن
class C:
@classmethod
def who(cls): return cls.__name__
@staticmethod
def pi(): return 3.14
c = C()
print(c.who())
print(c.pi())أسلوب الفئة للكائنات الأحادية
class Singleton:
_instance = None
@classmethod
def get(cls):
if cls._instance is None:
cls._instance = cls()
return cls._instance
a = Singleton.get()
b = Singleton.get()
print(a is b)تجاوز أساليب الفئة
class Base:
@classmethod
def info(cls): return f'{cls.__name__} info'
class Child(Base): pass
print(Base.info())
print(Child.info())التحقق من النوع باستخدام cls
class Shape:
@classmethod
def make(cls):
return cls() # NOT Shape()
class Square(Shape): pass
print(type(Square.make()).__name__)الدمج مع @property
class Config:
_data = None
@classmethod
def load(cls):
if cls._data is None:
cls._data = {'debug': True}
return cls._data
print(Config.load())تحقق سريع
مراجعة
واصل التقدم
الأسئلة الشائعة
هل درس «@classmethod و@staticmethod» مجاني؟
نعم — نص درس «@classmethod و@staticmethod» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.
ماذا ستتعلم في «@classmethod و@staticmethod»؟
عرّف الطرق الخاصة بمستوى الفئة والطرق الساكنة باستخدام المزخرفات المناسبة تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟
لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «@classmethod و@staticmethod»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟
نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الدوال ككائنات من الدرجة الأولى
- كتابة مزخرفات مخصصة
- المزخرف @property
- @classmethod و@staticmethod