سؤال

هل هناك طريقة للمساعدة في إكمال رمز PYDEV بإخباره بنوع المتغير؟

مع PDT، يمكنك استخدام بناء جملة مثل PHPDOC لهذا الغرض:

/* @var $my_var MyClass */
$my_var = myFunction();
// PDT is able to figure out that $my_var is a MyClass object.

ولكن حتى الآن، لا أستطيع معرفة كيفية القيام بنفس الشيء في بيثون.

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

المحلول

كلا (انظر مستندات). يبدو أن PYDEV يقوم بإكمال الكلمات الرئيسية المستوردة واللغة الرئيسية.

لا يبدو أن هذا سيأتي كثيرا. يبدو المتغير في السؤال كما أنه لن يكون غير معروف فقط مع PYDEV إذا تم تمريره كوسيطة دالة بدون قيمة افتراضية. وفي حالة وجود وظيفة تعمل على صفك الخاص، يبدو أن هذا يجب أن يكون عضوا في الفصل ( لذا فإن الإكمال التلقائي يعمل بالفعل).

نصائح أخرى

لا يبدو أن خدعة تأكيد تعمل بالنسبة لي مع PYDEV 2.2.2؛ ما زال من المفترض أن؟

ومع ذلك خدعة أخرى حاولت وهذا العمل هو ما يلي:

class Foo(object):
    def __init__(self, bar):
       self.bar = bar
       # Tricking PyDev
       if (not self.bar):
          self.bar = Bar()
          raise Exception("Bar should not be null")

في جميع الحالات، يبدو عبئا جميلا، وأحب طريقة نظافة للقيام بأشياء (الوثائق، التوضيحية، أيا كان)

في الواقع، يمكنك إذا كنت تقوم بتأكيد ISInstance ()

على سبيل المثال:

a = function()
assert isinstance(a, MyClass)
a. <- would get the proper completions

لاحظ أن PYDEV يقوم بتحليل عودة الوظائف، لذلك، من الممكن أن يعرف ذلك في عدد من الحالات.

أيضا، لا ينبغي أن يكون ذلك عقوبة وقت التشغيل إذا كنت تستخدم Python -o (والتي ستزيل التأكيد)

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