Лучший способ - это передать имя конструктору, как в выбранном ответе. Однако, если вы действительно НЕ хотите, чтобы пользователь не передавал имя конструктору, вы можете выполнить следующий взлом:
Если вы создаете экземпляр с помощью «ThisObject = SomeObject ()» из команды line, вы можете получить имя объекта из командной строки в истории команд:
import readline
import re
class SomeObject():
def __init__(self):
cmd = readline.get_history_item(readline.get_current_history_length())
self.name = re.split('=| ',cmd)[0]
Если вы создаете экземпляр с помощью команды «exec», вы можете справиться с этим с помощью:
if cmd[0:4] == 'exec': self.name = re.split('\'|=| ',cmd)[1] # if command performed using 'exec'
else: self.name = re.split('=| ',cmd)[0]