#python
#python
Вопрос:
У меня есть класс (скажем, называемый Account), сохраненный как переменная (скажем, cur_class), и я хочу инициализировать экземпляр класса. Я подумал
cur_class.__init__()
сработало бы, но это выдает мне ‘несвязанный метод init() должен вызываться с экземпляром учетной записи в качестве первого аргумента (вместо этого ничего не получил)’. Очевидно, я делаю что-то неправильно — кто-нибудь может указать мне правильное направление?
Спасибо, Ричард
Комментарии:
1. Зачем это делать? Это выполняется автоматически, когда вы это делаете
our_class()
.2. @S.Лотт — Я не силен в python и не представлял, что вы могли бы просто добавить несколько скобок после имени переменной для создания экземпляра. Это не так часто встречается в языках.
3. @Richard: «Это не так часто встречается в языках» Пожалуйста, не предполагайте ничего и не навязывайте Python синтаксис другого языка. Это приведет к еще большей путанице и более странным и трудным для ответа вопросам. Руководство сэкономит вам много времени.
4. @S.Лотт — Я не думаю, что вопрос был странным или на него было сложно ответить. Я просматривал документацию по python около получаса, прежде чем задать этот вопрос. Если у вас есть какие-либо хорошие учебные пособия, пожалуйста, не стесняйтесь рекомендовать.
5. @Richard, обратите внимание, что вам, вероятно, следует вызвать это,
CurClass
поскольку соглашение об именовании Python гласит, чтоcur_class
для имен переменных следует использовать строчные буквы с подчеркиванием.
Ответ №1:
Попробуйте cur_class()
. Например:
In [1]: class C(object): pass
...:
In [2]: cur_class = C
In [3]: obj = cur_class()
In [4]: obj
Out[4]: <__main__.C object at 0x1953c50>
Немного более длинное объяснение заключается в том, что классы Python можно вызывать. Вызов класса возвращает новый экземпляр.