هل يمكن لـ Pydoc/Help () إخفاء الوثائق لطرق وسمات الفصل الموروثة؟
-
27-09-2019 - |
سؤال
عند إعلان فئة ترث من فئة معينة:
class C(dict):
added_attribute = 0
وثائق الفصل C
يسرد جميع طرق dict
(إما من خلال help(C)
أو pydoc
).
هل هناك طريقة لإخفاء الطرق الموروثة من الوثائق التي تم إنشاؤها تلقائيًا (يمكن أن تشير سلسلة التوثيق إلى الفئة الأساسية ، للطرق غير المكتوبة)؟ أم أنها مستحيلة؟
سيكون هذا مفيدًا: pydoc
يسرد الوظائف المحددة في وحدة نمطية بعد، بعدما فصولها. وبالتالي ، عندما يكون للفئات وثائق طويلة جدًا ، يتم طباعة الكثير من المعلومات المفيدة قبل تقديم الوظائف الجديدة التي توفرها الوحدة ، مما يجعل الاستغلال أكثر صعوبة (يجب عليك تخطي جميع الوثائق للطرق الموروثة حتى تصل إلى شيء محدد للوحدة التي يتم توثيقها).
المحلول
pydoc
و ال help
Buildin لا تدعم هذا ، ولكن لا يوجد سبب لعدم تمكنك من كتابة الأداة الخاصة بك (ربما عن طريق تعديل مصدر Pydoc) الذي سيحصل على السلوك الذي تريده. فقط امش قاموس من الفصول الدراسية للحصول على السمات المحددة محليًا ، ثم ابحث عن الأشياء التي تحتوي مستند كسممة.
نصائح أخرى
واجهت نفس المشكلة وحلها على Python 2.7.6 لنظام التشغيل Windows (x86) عن طريق إضافة 3 أسطر إلى pydoc.py. تعليمات:
- اصنع نسختك الخاصة من lib pydoc.py
ابحث عن كل حالات
inherited
عامل (3 مرات ، على حساب بلدي) في الملف و اضبطها على قائمة فارغة مباشرة بعد تعريفه. على سبيل المثال ، حصلت على السطر 809:attrs ، الموروثة = _split_list (attrs ، lambda t: t [2] هل هذا isclass)
وكتب inherited = []
على خط جديد تحتها.
الآن لم يعد يطبع الطرق الموروثة بعد الآن.
يمكنك إعطاء الفئة A metaclass مع الطريقة الخاصة __dir__
التي تُرجع قائمة السمات الخاصة بها. سيستخدم Pydoc هذه القائمة.
ملحوظات:
- سيؤثر هذا أيضًا على سلوك
dir()
. - في حالات نادرة ، من المعروف أن استخدام metaclasses يفتح بوابة لبعد الجحيم.