⚡️ Что такое интроспекция?



Introspection in Python

Интроспекция — это способность программы исследовать тип или свойства объекта во время работы программы. Вы можете поинтересоваться, каков тип объекта, является ли он экземпляром класса. Некоторые языки даже позволяют узнать иерархию наследования объекта. Возможность интроспекции есть в таких языках, как Ruby, Java, PHP, Python, C++ и других. В целом, инстроспекция — это очень простое и очень мощное явление. Вот несколько примеров использования инстроспекции:



// Java



if(obj instanceof Person){

Person p = (Person)obj;

p.walk();

}

//PHP



if ($obj instanceof Person) {

// делаем что угодно

}


В Python самой распространённой формой интроспекции является использование метода dir для вывода списка атрибутов объекта:



# Python



class foo(object):

def __init__(self, val):

self.x = val

def bar(self):

return self.x



...



dir(foo(5))

=> ['__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__', '__hash__', '__init__', '__module__',

'__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', '__weakref__', 'bar', 'x']




@python_job_interview