вызов python __init__ для класса

#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 можно вызывать. Вызов класса возвращает новый экземпляр.