Как создавать переменную с заранее неизвестным именем

У меня есть класс Person

class Person:
    def __init__(self, name, sex):
        self.name = name
        self.sex = sex

Я хочу создавать объекты класса так, чтобы они назывались по признаку self.name.

Т.е, к примеру, в псевдокоде это будет выглядеть так:

имя_человека = Person(имя_человека, пол)

Спасибо!


Ответы (1 шт):

Автор решения: Евгений

Если переменная создаётся в глобальной области видимости:

name = 'Иван'
globals().update({name: Person(name, 'male')})
# в глобальной области видимости теперь есть переменная с именем Иван, содержащий объект класса Person

Если переменная создаётся в локальной области видимости (внутри функции):

def someFunction(name='Иван'):
    locals().update({name: Person(name, 'male')})
    # в области видимости функции someFunction теперь есть переменная с именем Иван, содержащий объект класса Person

Если переменная создаётся внутри объекта класса:

a = SomeClass()
name = 'Иван'
a.__dict__.update({name: Person(name, 'male')})
# в объекте a теперь есть атрибут с именем Иван, содержащий объект класса Person
→ Ссылка