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

السؤال

نشر

 

ما هي أفضل طريقة لاستدعاء دالة معينة من خلال نص (اسم الدالة) في برنامج بايثون. على سبيل المثال ، لنفترض أن لديّ الصنف foo بداخله method تسمى bar ، ولدي نص يحتوي على كلمة "bar". ما هي أفضل طريقة لاستدعاء foo.bar()؟

Recommended Posts

  • 0
نشر

لنفترض انه لدينا الصنف foo وبداخله الدالة bar وظيفتها طباعة كلمة yes

class foo:
  def bar(self):
    print('yes')

يمكننا الوصول للدالة bar عن طريق انشاء كائن من الصنف foo ومن ثم استخدام الدالة

p1 = foo()
p1.bar()

كما تلاحظ انشات كائن من الصنف ومن ثم استخدم الدالة التي بداخله bar
سوف تكون النتيجة كالتالي

yes

 

  • 1
نشر

يتم استدعاء دالة عن طريق استخدام متحول نصي يحوي الاسم كالتالي:

  • getattr يقوم بإعادة (method | attribute) من الصنف المستدعاة عليه

  • نقوم بتنفيذ الدالة المعادة

# تضمين الصنف
import foo

# جلب الدالة

bar = 'bar'
method_bar = getattr(foo, bar)

# الاستدعاء
result = method_bar()

ويمكن تنفيذها مباشرة كالتالي:

result = getattr(foo, 'bar')()

وأيضا يمكننا باستخدام الدالتين حسب scope:

locals()["bar"]()

globals()["bar"]()

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...