رفتن به محتوای اصلی
برنامه‌سازی پیشرفته با پایتون درس‌نامهٔ آزاد
مفهوم متوسط ۷ دقیقه

درون‌نگری و inspect

جعبه‌ابزار بازتاب: type، isinstance، hasattr، getattr، dir و ماژول inspect.

import inspect

def register(func):
    sig = inspect.signature(func)
    print(func.__name__, list(sig.parameters))
    return func

@register
def enroll(name, age=18):
    ...
# enroll ['name', 'age'] — دکوراتور موقع تعریف، امضا را خواند

نقشهٔ ابزار: type نوعِ دقیق، isinstance عضویت در خانواده (با ارث‌بری)، hasattr/getattr دسترسیِ پویا با نامِ رشته‌ای، dir فهرستِ نام‌ها، inspect.signature امضا، vars() دیکشنریِ ویژگی‌های نمونه. قانون احتیاط: پویاییِ زیاد، خوانایی را می‌خورد — بازتاب برای ابزار و چارچوب است، نه برای منطقِ عادیِ برنامه.

برداشت نادرست رایج

اشتباه رایج

کدِ بازتابی چون هوشمندانه است، همیشه بهتر است.

تصحیح

کدِ صریحِ ساده تقریباً همیشه برنده است. بازتاب را برای جایی نگه دار که واقعاً نام‌ها را از قبل نمی‌دانی (پلاگین، ابزار، دیباگر).

پیش‌نیازها

مطالب مرتبط

از همین بخش و با برچسب‌های مشترک

این مطلب را خواندید؟ آن را علامت بزنید تا پیشرفت شما روی همین دستگاه ذخیره شود.

وضعیت پیشرفت برای درون‌نگری و inspect