كيف يمكن للثعبان أن يطلق على فئة لا يتم تعريفها أبدًا في الكود؟

StackOverflow https://stackoverflow.com/questions/1355710

  •  20-09-2019
  •  | 
  •  

سؤال

لا أعرف ما إذا كان من الممكن لصق كل الكود هنا ولكني أنظر إلى الرمز في هذا غيت ريبو.

إذا نظرت إلى المثال الذي يفعلونه:

ec2 = EC2('access key id', 'secret key')

...ولكن لا يوجد EC2 صف دراسي. ومع ذلك ، يبدو في libcloud\providers.py هناك قول EC2 إلى EC2NodeDriver عثر عليه في libcloud\drivers\ec2.py. يتم حساب التعيين الصحيح بواسطة get_driver(provider), ، ولكن لا يبدو أن هذه الطريقة تسمى في أي مكان.

أنا جديد على Python ، من الواضح ، ولكن ليس للبرمجة. لست متأكدًا مما يجب أن أبحث عنه في المستندات لمعرفة ذلك.

هل كانت مفيدة؟

المحلول

example.py يتضمن import بيان يقرأ:

from libcloud.drivers import EC2, Slicehost, Rackspace

هذا يعني أن ال EC2 يتم استيراد الفصل من libcloud.drivers وحدة. ومع ذلك ، في هذه الحالة ، libcloud.drivers هو في الواقع أ صفقة (بيثون صفقة يحتوي على الوحدات النمطية)، مما يعنى EC2 يجب تعريفه في ملف __init__.py في libcloud/drivers/, ، لكنها ليست كذلك. مما يعني أنه في هذه الحالة المحددة ، فإن رمز المثال الخاص بهم خاطئ في الواقع. (قمت بتنزيل الكود وحصلت على خطأ في الاستيراد عند التشغيل example.py, ، وكما ترون ، الملف libcloud/drivers/__init__.py لا يحتوي على أي تعريفات على الإطلاق ، على الأقل EC2 تعريف.)

نصائح أخرى

قد يكون التحقق من أمثلة libcloud. أنا رأيت هذا:

from libcloud.drivers import EC2, Slicehost, Rackspace

يجلب بيان Python 'Import' الفصل من وحدة Python الأخرى ، في هذه الحالة من وحدة Libcloud.drivers.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top