Я пытаюсь распечатать имя экземпляра класса. В этом примере это таймер, который выводит, как долго выполняются различные перекрывающиеся участки моего кода:
class timerstart:
def __init__(self):
# Sets some variables with system time
def stop(self):
# Calculates current total time
print(*instance name*, 'total time is ...')
Поэтому, когда я вызываю это в своем коде, это будет выглядеть примерно так:
allcode=timerstart()
# some code
subcode=timerstart()
# some code
subcode.stop()
# some code
allcode.stop()
Что выведет:
subcode total time...
allcode total time...
Я знаю, что могу инициализировать функцию с ее именем: allcode=timerstart(name='allcode')
, что раздражает.
Я также сталкиваюсь с проблемами с трассировкой, используя: inspect.currentframe().f_back.f_locals.items()
Есть ли способ напечатать имя экземпляра, например print(self.selfname)
или что-то в этом роде?
timerstart
менеджером контекста, чтобы можно было написатьwith timerstart("allcode"): ...
. Тело оператораwith
будет ограничивать блок, который будет синхронизирован, а не завершаться явным вызовомstop
. - person chepner   schedule 04.12.2019