Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70% Забронировать скидку
07 Июл 2023
2 мин
901

Встроенная функция для вывода всех текущих свойств и значений объекта в Python

Одна из обычных проблем, с которой сталкиваются новички в программировании на Python, это отслеживание состояния объектов в процессе выполнения скрипта.

Одна из обычных проблем, с которой сталкиваются новички в программировании на Python, это отслеживание состояния объектов в процессе выполнения скрипта. Например, есть некий объект, и требуется узнать, какие у него сейчас свойства и какие значения этих свойств.

class MyClass:
    def __init__(self, value1, value2):
        self.property1 = value1
        self.property2 = value2

my_object = MyClass(10, 20)

В данном случае хотелось бы вывести на экран все свойства объекта my_object и их значения.

В языке программирования Python нет встроенной функции, аналогичной функции print_r в PHP, однако есть несколько способов, которые могут помочь в решении этой задачи.

Использование функции vars

Функция vars в Python возвращает словарь, который содержит атрибуты данного объекта.

print(vars(my_object))

Результат выполнения этого кода может выглядеть следующим образом:

{'property1': 10, 'property2': 20}

Использование функции dir

Функция dir в Python возвращает список имен атрибутов объекта.

print(dir(my_object))

Однако, функция dir возвращает все атрибуты, включая служебные методы класса, что может быть избыточно. Но с ее помощью можно получить список всех атрибутов объекта, а затем получить их значения.

for attribute_name in dir(my_object):
    attribute_value = getattr(my_object, attribute_name)
    print(f'{attribute_name}: {attribute_value}')

Использование модуля pprint

Если объект содержит сложную структуру, то его может быть сложно отображать с помощью обычного print. В этом случае на помощь приходит модуль pprint (pretty-print), который предоставляет возможности для более красивого вывода данных.

import pprint

pprint.pprint(vars(my_object))

Важно помнить, что эти функции могут не всегда работать с некоторыми типами объектов, например, встроенными типами данных, такими как списки или словари.

Добавить комментарий

Подарок
Забрать подарок