Я хочу создать экземпляры класса из строки, которую пользователь ввел, поэтому я использовал функцию exec(). Проблема в том, что я не могу получить доступ к экземпляру по имени за пределами функции. Моя первая мысль заключалась в том, что это проблема с областью действия функции, и я все еще думаю, что это так, но когда я помещаю экземпляры в список, я могу получить к ним доступ, просто не используя их имя. Я не совсем уверен, что здесь происходит. Есть ли способ, чтобы я мог обращаться к экземплярам по их имени, например, thing1.properties
, но вне функции, потому что это не весь мой код, поэтому было бы бесполезно помещать все вне функции ? Что-то вроде создания списка экземпляров в функции и «извлечения» всех экземпляров вне функции, чтобы я мог обращаться к ним за пределами функции. Вот код:Класс и область функций
class Things:
def __init__(self, properties):
self.properties = properties
listt = []
def create_instance():
exec("thing1=Things('good')")
listt.append(thing1)
create_instance()
print listt[0].properties
print thing1.properties
Это почти наверняка очень плохой способ достижения своей цели , Что ты пытаешься сделать? – rlms
Я написал в вопросе. Я хочу создать экземпляры класса из строки, которую пользователь набрал. Поэтому, когда пользователь вводит экземпляр объекта «thing1» thing1 = Things(). Если есть лучший способ сделать это, я бы сказал, что вы поделитесь им со мной. –
Загрязнение глобальной видимости в Python неодобрительно. Вероятно, вы должны хранить свои экземпляры в словаре. –