Когда python создает класс, он делает это, выполняя код в определении класса ровно один раз , создавая таким образом пространство имен класса и т. Д. *
Если вы хотите, чтобы он запускался при каждом вызове, вам нужно поместить свой код в метод __init__
(который является конструктором).
class a:
class b:
def __init__(self):
print 'bbb'
a.b()
a.b()
Это напечатает bbb
2x. Обратите внимание, что вам не нужен экземпляр a()
для доступа к a.b
, потому что class b
- это просто атрибут class a
. Вы действительно мало что получаете, вкладывая классы в python.
Обратите внимание, я не использовал __b__
, потому что python резервирует слова, которые начинаются и заканчиваются двойным подчеркиванием.