Python с использованием метода argparse.ArgumentParser

Лучший способ - это передать имя конструктору, как в выбранном ответе. Однако, если вы действительно НЕ хотите, чтобы пользователь не передавал имя конструктору, вы можете выполнить следующий взлом:

Если вы создаете экземпляр с помощью «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]
17
задан Mark Davidson 18 February 2014 в 08:27
поделиться