Когда вы объявляете переменные-члены, так как вы это сделали, они связаны с классом, а не с объектом. По аналогии с С++, вы создали переменные-члены elements и N статическими.
Вам нужно создавать переменные-члены в конструкторе, а не в определении класса:
class Vector:
def __init__(self, N):
self.elenent = []
self.N = N
for i in range(N):
self.element.append(0)
def __str__(self):
out_str = ""
for i in range(self.N):
out_str = out_str + str(self.element[i]) + " "
return out_str
def generate(self):
random.seed()
for i in range(self.N):
self.element[i] = float(random.randint(1, 100))
Или использовать специальную переменную __slots__:
class Vector:
__slots__ = ['element', 'N']
def __init__(self, N):
self.elenent = []
self.N = N
for i in range(N):
self.element.append(0)
def __str__(self):
out_str = ""
for i in range(self.N):
out_str = out_str + str(self.element[i]) + " "
return out_str
def generate(self):
random.seed()
for i in range(self.N):
self.element[i] = float(random.randint(1, 100))
Отличие в том, что во втором случае вы уже не сможете добавить другие переменные-члены, и объекты будут занимать меньше памяти.