Не. Не. Есть. Stateful. Учебный класс. Переменные.
Это кошмар для отладки, поскольку объект класса теперь имеет специальные функции.
Классы с состоянием связывают две (2) несвязанные обязанности: состояние создания объекта и созданных объектов. Не объединяйте обязанности, потому что кажется, что они принадлежат друг другу. В этом примере подсчет созданных объектов является обязанностью Фабрики. Созданные объекты имеют совершенно не связанные обязанности (что не может быть легко выведено из вопроса).
Также, пожалуйста, используйте имена классов в верхнем регистре.
class MyClass( object ):
def __init__(self, name):
self.name=name
def myClassFactory( iterable ):
for i, name in enumerate( iterable ):
yield MyClass( name )
Счетчик последовательности теперь является частью фабрики, где должны поддерживаться состояние и счетчики. На отдельном заводе.
[Для тех, кто играет в Code Golf, это короче. Но дело не в этом. Дело в том, что у класса больше нет состояний.]
Непонятно из вопроса, как создаются экземпляры Myclass. Не имея никакой подсказки, о том, как использовать фабрику, можно сказать намного больше. Итерируемый - обычный преступник. Возможно, что-то, что перебирает список, файл или какую-то другую итеративную структуру данных.
Кроме того, для тех, кто только с лодки из Java, фабричный объект - это просто функция. Больше ничего не нужно.
Поскольку пример по данному вопросу совершенно неясен, трудно понять, почему (1) два уникальных объекта создаются с (2) счетчиком. Два уникальных объекта - это уже два уникальных объекта, и счетчик не нужен.
Например, на статические переменные в Myclass никогда не ссылаются нигде. Это делает его очень, очень трудным для понимания примера.
x, y = myClassFactory( [ "hello", "goodbye" ] )
Если число или последнее значение где-то фактически используется для чего-то, то может быть создан, возможно, значимый пример.