اذهب إلى المحتوى

السؤال

نشر

هل من الممكن عمل Static Class في بايثون، أعلم أنه من الممكن فعل ذلك في لغات أخرى مثل PHP ولكن هل من الممكن أن يكون لدينا متغيرات أو توابع methods من نوع Static في صنف Class في بايثون؟ كيف يمكن إتمام هذا الأمر؟

Recommended Posts

  • 0
نشر (معدل)

 

نعم يمكنك ذلك :

لتعريف طريقة 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

 

تم التعديل في بواسطة Ali Haidar Ahmad
  • 2
نشر

يمكنك أن تقوم بعمل متغيرات من نوع 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 كمدخل للدالة كباقي الدوال العادية.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...