آموزش ماژول inspect پایتون
ماژول inspect به بررسی آبجکتهای موجود در کدی که نوشته ایم کمک می کند. از آنجایی که پایتون یک زبان شی گرا است و تمام کدهایی که نوشته می شود اساساً یک تعامل بین این آبجکتها است، بنابراین ماژول inspect در بررسی ماژول های خاص یا آبجکتهای خاص بسیار مفید است.
ماژول inspect متدهای زیادی را ارائه میدهد، این متدها را میتوان به دو دسته طبقهبندی کرد: متدهایی برای تأیید نوع آبجکت و متدهایی برای بازیابی اطلاعات آبجکت. متداول ترین متدهای مورد استفاده هر دو دسته در زیر ذکر شده است.
دوره پیشنهادی: دوره آموزش رایگان پایتون (python)
# متدهایی برای تایید نوع آبجکت
+ متد isclass پایتون
متد isclass یک آبجکت را گرفته و اگر آن آبجکت یک کلاس باشد مقدار True و در غیر اینصورت مقدار False را برمیگرداند:
import inspect
class A(object):
pass
print(inspect.isclass(A)) # True
+ متد ismodule پایتون
اگر آبجکتی که به این متد ارسال میکنید یک ماژول باشد، مقدار True و در غیر اینصورت مقدار False را برمیگرداند:
import inspect
import numpy
print(inspect.ismodule(numpy)) # True
+ متد isfunction پایتون
اگر آبجکتی که به این متد ارسال میکنید یک فانکشن باشد، مقدار True و در غیر اینصورت مقدار False را برمیگرداند:
import inspect
def fun(a):
return 2*a
print(inspect.isfunction(fun)) # True
+ متد ismethod پایتون
اگر آبجکتی که به این متد ارسال میکنید یک متد باشد، مقدار True و در غیر اینصورت مقدار False را برمیگرداند:
import inspect
class A:
def show(self):
pass
print(inspect.ismethod( A().show )) # True
# متدهایی برای بازیابی اطلاعات آبجکت
+ متد getclasstree پایتون
متد getclasstree به دریافت و بررسی سلسله مراتب کلاس کمک می کند. یک تاپل از آن کلاس و کلاس های پایه قبلی آن را برمی گرداند. ترکیب با متد getmro() که کلاس های پایه را برمی گرداند به درک سلسله مراتب کلاس کمک می کند.
مثال اول:
import inspect
class A(object):
pass
class B(A):
pass
class C(B):
pass
print(inspect.getmro(C))
# OUTPUT
(<class ‘__main__.C’>, <class ‘__main__.B’>, <class ‘__main__.A’>, <class ‘object’>)
مثال دوم:
import inspect
class A(object):
pass
class B(A):
pass
class C(B):
pass
for i in (inspect.getclasstree(inspect.getmro(C))):
print(i)
# OUTPUT
(<class ‘object’>, ()) [(<class ‘__main__.A’>, (<class ‘object’>,)), [(<class ‘__main__.B’>, (<class ‘__main__.A’>,)), [(<class ‘__main__.C’>, (<class ‘__main__.B’>,))]]]
+ متد getmembers پایتون
این متد تمام اعضای یک ماژول را برمیگرداند:
import inspect
import math
print(inspect.getmembers(math))
# OUTPUT
[(‘__doc__’, ‘This module provides access to the mathematical functions\ndefined by the C standard.’), (‘__loader__’, <class ‘_frozen_importlib.BuiltinImporter’>), (‘__name__’, ‘math’), (‘__package__’, ”), (‘__spec__’, ModuleSpec(name=’math’, loader=<class ‘_frozen_importlib.BuiltinImporter’>, origin=’built-in’)), (‘acos’, <built-in function acos>), (‘acosh’, <built-in function acosh>), (‘asin’, <built-in function asin>), (‘asinh’, <built-in function asinh>), (‘atan’, <built-in function atan>), (‘atan2’, <built-in function atan2>), (‘atanh’, <built-in function atanh>), (‘ceil’, <built-in function ceil>), (‘copysign’, <built-in function copysign>), (‘cos’, <built-in function cos>), (‘cosh’, <built-in function cosh>), (‘degrees’, <built-in function degrees>), (‘e’, 2.718281828459045), (‘erf’, <built-in function erf>), (‘erfc’, <built-in function erfc>), (‘exp’, <built-in function exp>), (‘expm1’, <built-in function expm1>), (‘fabs’, <built-in function fabs>), (‘factorial’, <built-in function factorial>), (‘floor’, <built-in function floor>), (‘fmod’, <built-in function fmod>), (‘frexp’, <built-in function frexp>), (‘fsum’, <built-in function fsum>), (‘gamma’, <built-in function gamma>), (‘gcd’, <built-in function gcd>), (‘hypot’, <built-in function hypot>), (‘inf’, inf), (‘isclose’, <built-in function isclose>), (‘isfinite’, <built-in function isfinite>), (‘isinf’, <built-in function isinf>), (‘isnan’, <built-in function isnan>), (‘ldexp’, <built-in function ldexp>), (‘lgamma’, <built-in function lgamma>), (‘log’, <built-in function log>), (‘log10’, <built-in function log10>), (‘log1p’, <built-in function log1p>), (‘log2’, <built-in function log2>), (‘modf’, <built-in function modf>), (‘nan’, nan), (‘pi’, 3.141592653589793), (‘pow’, <built-in function pow>), (‘radians’, <built-in function radians>), (‘remainder’, <built-in function remainder>), (‘sin’, <built-in function sin>), (‘sinh’, <built-in function sinh>), (‘sqrt’, <built-in function sqrt>), (‘tan’, <built-in function tan>), (‘tanh’, <built-in function tanh>), (‘tau’, 6.283185307179586), (‘trunc’, <built-in function trunc>)]
+ متد getsource پایتون
این متد سورس کد یک ماژول، کلاس، متد یا تابعی را که به عنوان آرگومان به متد getsource ارسال کردهاید را برمی گرداند:
import inspect
def fun(a,b):
return a*b
print(inspect.getsource(fun))
# OUTPUT
def fun(a,b):
return a*b
+ متد getmodule پایتون
این متد اطلاعات یک ماژول را برمیگرداند:
import inspect
import collections
print(inspect.getmodule(collections))
# OUTPUT
<module ‘collections’ from ‘D:\\Software\\Anaconda\\lib\\collections\\__init__.py’>
+ متد getdoc پایتون
این متد مستندات یک آبجکت را برمیگرداند:
import inspect
from tkinter import *
root = Tk()
print(inspect.getdoc(root))
# OUTPUT
Toplevel widget of Tk which represents mostly the main window
of an application. It has an associated Tcl interpreter.
ارسال نظر