سؤال

لا يمكن معرفة ذلك. في المحطة، واستيراد وحدة نمطية التي instantiates فئة، وأنا لم ترد على كيفية الوصول إليه. وبطبيعة الحال، لا أستطيع مثيل دائما في محطة:

Server=Data.ServerData()

وبعد ذلك يمكنني الحصول على نتيجة لذلك:

Server.Property().DefaultChart

ولكن، أريد أن تخطي هذه الخطوة الحصول على النتيجة مباشرة من مثيل قيد التشغيل في وحدة. أعتقد Data.Server في هذه الحالة يجب تحميل المثال Server من عندما كنت المستوردة البيانات:

Data.Server.Property().DefaultChart

>>> AttributeError: 'module' object has no attribute 'Server'

ولكن كيف الوصول إلى مثيل قيد التشغيل من محطة؟

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

المحلول

إذا استيراد Data.py يخلق ضمنيا مثيل من فئة Data.ServerData (مشكوك فيها إلى حد ما، ولكن طيب في بعض الحالات)، التي لا تزال يخبرنا شيئا عن كيف اختار هذه الوحدة على سبيل المثال أن واحد. هل dir(Data) في موجه >>> لتشاهد كل أسماء محددة في وحدة Data. إذا كنت تريد أن ترى ما أسماء (إن وجدت!) لديها القيم التي هي حالات Data.ServerData، منها مثلا:

>>> [n for n in dir(Data) if isinstance(getattr(Data,n), Data.ServerData)]

وقراءة رمز مصدر Data.py لقد يكون أكثر بساطة، ولكن لديك العديد من الخيارات الأخرى لهذا التأمل لمعرفة بالضبط ما يحدث (وكيف تختلف عن ما هو متوقع [[لم تكن متأكدا على أي أساس!]] أن يذهب على).

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