Я столкнулся с этой проблемой, когда кодировал некоторые простые объектно-ориентированные вещи в Python. Допустим, я создал класс с инкрементным идентификатором (используя статическую переменную) и инициализировал новые объекты этого класса, ожидая, что идентификатор каждого нового экземпляра будет автоматически увеличен на 1.
Это класс, который я определил:
class Object:
counter = 0
def __init__(self):
self.id = Object.counter
Object.counter += 1
Затем я создал массив фиксированной длины, содержащий k экземпляров типа Object
. У меня есть два способа сделать это:
(1)
objects = [Object() for i in range(k)]
или (2)
objects = [Objects()] * k
(1) дает мне желаемый результат, т.е. каждый экземпляр имеет инкрементный идентификатор. Интересно, что (2) создает экземпляры с одинаковым идентификатором = 0. Итак, я думаю, (2) делает то же самое, что и (1), но параллельно?
Кроме того, я в основном делаю ООП в Java,и это, как я реализую добавочный идентификатор. Я не знаю, относится ли это и к Python.
Извините, если мой вопрос излишний. Я действительно не знаю, как назвать такие вещи, которые я делаю (постижение списков, я думаю).
Большое спасибо заранее за ваш ответ!