Предположим, что у меня есть класс C
.В Python, каков правильный способ создания экземпляра класса из переменной?
Я могу написать o = C()
, чтобы создать экземпляр C
и назначить его o
.
Однако, если я хочу назначить сам класс в переменную, а затем создать его экземпляр?
Например, предположим, что у меня есть два класса, такие как C1
и C2
, и я хочу сделать что-то вроде:
if (something):
classToUse = C1
else:
classToUse = C2
o = classToUse.instantiate()
Что синтаксис для фактического instantiate()
? Достаточно ли позвонить __new__()
?
Итак, семантика добавления() к переменной означает «рассматривать как класс и создавать экземпляры?». – Uri
() означает «называть это». Вызов класса означает его экземпляр. За кулисами вызов чего-то вызывает метамод __call__, который вы можете использовать, чтобы сделать, например, экземпляры класса * *. – Cide
В предыдущем комментарии должен быть, вероятно, '__call __()'. (Надеюсь, что форматирование работает на этот раз.) –