English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
staticmethod() built-in function returns a static method for the given function.
staticmethod() syntax is:
staticmethod(function)
استخدام staticmethod() يعتبر طريقة غير معيارية لإنشاء الوظائف الثابتة في Python.
لذلك، في الإصدارات الأحدث من Python، يمكنك استخدام مُزين @staticmethod.
قواعد النصب لـ @staticmethod
الطريقة الثابتة def func(args, ...)
staticmethod() تأخذ معاملًا واحدًا فقط:
function - تحتاج إلى تحويلها إلى طريقة ثابتة
staticmethod() تعود طريقة ثابتة للوظيفة التي يتم تقديمها كمعامل.
الطريقة الثابتة معالطريقة الكلاسيكيةمماثلة جدًا، هي طرق مرتبطة بالفئة وليس بالنموذج.
لا تحتاج إلى إنشاء نموذج للفئة. لذلك، لا تعتمد على حالة النموذج.
الفرق بين الطريقة الثابتة والطريقة الكلاسيكية هو:
لا تعلم الطريقة الثابتة أي شيء عن الفئة، بل تتعامل فقط مع المعاملات.
تستخدم الطرق الثابتة مع الفئة، لأن معاملاتها دائمًا هي الفئة نفسها.
يمكن تفعيلها من خلال الفئة أو عبر الأشخاص.
Class.staticmethodFunc() أو حتى Class().staticmethodFunc()
class Mathematics: def addNumbers(x, y): return x + y # إنشاء طريقة ثابتة addNumbers Mathematics.addNumbers = staticmethod(Mathematics.addNumbers) print('العدد الإجمالي:', Mathematics.addNumbers(5, 10))
النتائج الصادرة
العدد الإجمالي هو: 15
يوجد تحديدات في استخدام الطرق الثابتة، لأن مثل الطرق أو أي طريقة أخرى في الفئة، لا يمكن للطرق الثابتة الوصول إلى خصائص الفئة نفسها.
لكن عندما تحتاج إلى وظيفة مفيدة لا تصل إلى أي خصائص للفئة ولكن تعلم أن هذه الوظيفة تنتمي إلى هذه الفئة، سنستخدم الطريقة الثابتة.
فئة Dates: def __init__(self, date): self.date = date def getDate(self): عدد دقائق self.date الطريقة الثابتة def toDashDate(date): عدد دقائق date.replace("/", "-") date = Dates("15-12-2016") dateFromDB = "15/12/2016" dateWithDash = Dates.toDashDate(dateFromDB) إذا (date.getDate() == dateWithDash): print("مجرد") else: print("غير متساوي")
النتائج الصادرة
مجرد
في هذا المكان، لدينا فئة Dates مخصصة فقط للتواريخ المميزة بالشرطة السفلية (-). ولكن في قاعدة بياناتنا السابقة، كانت كل التواريخ تعبر عنها بالشرطة العلوية.
لتحويل تاريخ السطر إلى تاريخ يحتوي على شرطي (-)، قمنا بإنشاء دالة مفيدة في toDashDate في Dates.
هذه هي الطريقة الثابتة لأنها لا تحتاج إلى الوصول إلى أي خصائص لـ Dates نفسها، بل تحتاج فقط إلى المعاملات.
يمكننا أيضًا إنشاؤها خارج فئة toDashDate، ولكن نظرًا لأنها تنطبق فقط على التواريخ، فإن الاحتفاظ بها داخل فئة Dates هو منطقي.
عندما لا نريد أن تغير/تعيد كتابة تنفيذ طريقة معينة في فرعية الفئة، يمكننا استخدام الطريقة الثابتة.
فئة Dates: def __init__(self, date): self.date = date def getDate(self): عدد دقائق self.date الطريقة الثابتة def toDashDate(date): عدد دقائق date.replace("/", "-") فئة DatesWithSlashes(Dates): def getDate(self): عدد دقائق toDashDate(self.date) date = Dates("15-12-2016") dateFromDB = DatesWithSlashes("15/12/2016") إذا (date.getDate() == dateFromDB.getDate()): print("مجرد") else: print("غير متساوي")
النتائج الصادرة
مجرد
في هذا السياق، لا نريد أن تغطي فئة الفرعية DatesWithSlashes الطريقة المفيدة toDashDate، لأن لها استخدامًا واحدًا فقط، وهو تحويل date إلى dash-date.
من خلال إعادة كتابة طريقة getDate() في فئة الفرعية، يمكننا بسهولة استخدام الطريقة الثابتة لاستغلال مزاياها، مما يسمح لها بالعمل بشكل طبيعي مع فئة DatesWithSlashes.