Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/75: Рейтинг темы: голосов - 75, средняя оценка - 4.68
1 / 8 / 0
Регистрация: 31.07.2016
Сообщений: 73

Имена текущих функции (метода), класса, объекта

05.08.2016, 17:09. Показов 14865. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.

Возможно ли в Python при выполнении программы узнать имена выполняющейся в данный момент функции (метода), если это метод класса - имя этого класса, и, желательно, объекта этого класса.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.08.2016, 17:09
Ответы с готовыми решениями:

Обрыв функции при вызове метода из объекта другого класса
Почему выполнение функция обрывается на вызове метода из объекта другого класса? DataBuffer.cpp //Получаем класс FirstDlg void...

Вызов метода класса из сторонней функции без объявления объекта
Собственно вопрос в топике. Можно? т.е. есть некий класс MyMySQLClass() в котором прописаны параметры доступа к БД, инициализация...

Работа метода класса в зависимости от типа объекта класса
есть такой код: template <typename __Type, size_t __m> class mvector { private: __Type _m; ...

9
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
05.08.2016, 18:31
Это проще некуда
Python
1
my_func.__name__
С методами все так же.
1
1 / 8 / 0
Регистрация: 31.07.2016
Сообщений: 73
07.08.2016, 11:28  [ТС]
На басурманском сайте еще такое нашел, тоже работает:

Python
1
print ("My name is: %s" % inspect.stack()[0][3])
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
08.08.2016, 07:34
А зачем?
Такое может понадобиться только для отладки. Ну так воспользуйтесь цивильным отладчиком. PyCharm ждёт вас.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
08.08.2016, 07:52
Цитата Сообщение от dondublon Посмотреть сообщение
Такое может понадобиться только для отладки.
Почему же, совсем не обязательно. Самым банальным примером может служить библиотека flask-classy, она строит url на основе названия классов и названий методов и активно использует такие вещи.
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
08.08.2016, 09:04
Цитата Сообщение от alex925 Посмотреть сообщение
Почему же, совсем не обязательно. Самым банальным примером может служить библиотека flask-classy, она строит url на основе названия классов и названий методов и активно использует такие вещи.
Не работал с flask-classy, но сильно сомневаюсь.

Речь была про то, чтобы узнать выполняющийся вот прям щас метод. Где мы сейчас, в идущем процессе. Смотрим на метод изнутри.

Строить url на основе названий классов - это совсем другое. Для этого даже объект класса создавать не нужно, и тем более - его запускать. Смотрим на методы извне.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
08.08.2016, 10:07
Цитата Сообщение от dondublon Посмотреть сообщение
Не работал с flask-classy, но сильно сомневаюсь.
Можно просто открыть сорцы и посмотреть
https://github.com/apiguy/flas... sy.py#L254

Цитата Сообщение от dondublon Посмотреть сообщение
Речь была про то, чтобы узнать выполняющийся вот прям щас метод.
Ну да, согласен, это немного другой разговор, но все равно не думаю, что это задача уж больно экзотическая.
0
1 / 8 / 0
Регистрация: 31.07.2016
Сообщений: 73
08.08.2016, 13:46  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
А зачем?
Такое может понадобиться только для отладки. Ну так воспользуйтесь цивильным отладчиком
Есть необходимость организовать в программе логирование. Программа разделена, условно говоря, на интерфейсную и рабочую части (не MVC, скорее в ней вид объединен с контроллером в одном модуле, а модель - в нескольких других модулях).

В ходе не отладки, а рабочей эксплуатации программы могут возникать внештатные ситуации, инфа о которых будет сбрасываться в логи. Ну и хотелось бы знать, из какой именно функции модели пришла очередная запись в лог, чтобы лучше понимать, что случилось.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
08.08.2016, 13:54
Вообще я бы делал это примерно так:
Python
1
2
3
4
5
6
7
8
import traceback
 
try:
    raise TypeError("Oups!")
except Exception as err:
    tb = traceback.format_exc()
 
print(tb)
В стандартном трейсе есть все, от описания ошибки, до указания на место возникновения. В реальном приложении конечно надо обработку похитрей делать, но способ все равно хороший.
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
08.08.2016, 14:44
somnium, а, понятно. Ну таки да, уже ответили, для этого есть traceback.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.08.2016, 14:44
Помогаю со студенческими работами здесь

Как вывести имена текущих подключившихся компьютеров к бд
Нашел в майкрософте код, который выводит на печать имена компьютеров, которые в данный момент подключены. Можно ли каким либо образом...

Вызов метода объекта класса
Как вызвать метод объекта класса ? заголовочный файл********** #include <vector> #include<string> class Matrix { ...

Узнать все метода объекта класса
Можно ли вывести все методы объекта класса типа как get_defined_functions()?

Создание объекта класса и вызов его метода
Добрый день, форумчане. На Яве программирую не больше недели. Столкнулся со следующей проблемой. Есть 2 класса Class1 и Class2 с методом...

Вызов метода объекта внутри определения метода другого объекта(вложенные классы)
Как мне вызвать метод объекта slider класса Slider внутри определения метода объекта класса StateBar? class StateBar { public: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru