Adam Ebrahim نشر 30 مايو 2021 أرسل تقرير نشر 30 مايو 2021 هل من الممكن عمل Static Class في بايثون، أعلم أنه من الممكن فعل ذلك في لغات أخرى مثل PHP ولكن هل من الممكن أن يكون لدينا متغيرات أو توابع methods من نوع Static في صنف Class في بايثون؟ كيف يمكن إتمام هذا الأمر؟ اقتباس
2 سامح أشرف نشر 4 يونيو 2021 أرسل تقرير نشر 4 يونيو 2021 يمكنك أن تقوم بعمل متغيرات من نوع static من خلال تعريف هذه المتغيرات في داخل الصنف نفسه وليس داخل أي دوال أخرى كالتالي: >>> class Example: ... x = 9 ... >>> Example.x 9 >>> لاحظ أن هناك إختلاف بين بايثون ولغات أخرى مثل C++ في هذا الأمر وهو أن المتغير x يمكن تغير قيمته فيما بعد من داخل الـ instance نفسه ويظل بإمكانك إستعمال المتغير الثابث أيضًا كالتالي: >>> ex = Example() >>> ex.x = 8 >>> print(ex.x, Example.x) 8 9 >>> كما بإمكانك أن تقوم بعمل دوال ثابتة static methods من خلال إضافة @staticmethod قبل تعريف الدالة كالتالي: >>> class Example: ... @staticmethod ... def f(a,b): ... print(a, b) ... >>> ex = Example() >>> ex.f(1, 2) 1 2 >>> Example.f(1, 2) 1 2 >>> لاحظ أن الدوال الثابتة في بايثون لا تحتاج إى إضافة self كمدخل للدالة كباقي الدوال العادية. 1 اقتباس
0 Ali Haidar Ahmad نشر 30 مايو 2021 أرسل تقرير نشر 30 مايو 2021 (معدل) نعم يمكنك ذلك : لتعريف طريقة static في بايثون نكتب قبلها @staticmethod كما في الكود الأول . لتعريف متحول من نوع static لانضعه داخل التابع __init__ و سيعتبره المترجم static كما في الكود الثاني. class gen: def __init__(self, gender): self.gender = gender @staticmethod def isman(gender): if gender=="Male": return True else: return False gen.isman("Male") #True class person: def __init__(self,name): self.name=name age = 25 #static variable p1=person("ali") print(str(p1.age)+" "+p1.name) # output 25 ali p2=person("ahmad") print(str(p2.age)+" "+p2.name) # output 25 ahmad print(person.age) # 25 تم التعديل في 30 مايو 2021 بواسطة Ali Haidar Ahmad 2 اقتباس
السؤال
Adam Ebrahim
هل من الممكن عمل Static Class في بايثون، أعلم أنه من الممكن فعل ذلك في لغات أخرى مثل PHP ولكن هل من الممكن أن يكون لدينا متغيرات أو توابع methods من نوع Static في صنف Class في بايثون؟ كيف يمكن إتمام هذا الأمر؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.