Почему после запуска он выводит не пароли а at 0x000001F9F6034F90>

from typing import Optional

class BaseGenerator:
    def reset(self) -> None:
        raise NotImplementedError

    def generate(self) -> Optional[str]:
            raise NotImplementedError
class BruteForceGenerator(BaseGenerator):
    def __init__(self, alphabet='0123456789abcdefghijklmnopqrstuvwxyz'):
        self.alphabet = alphabet
        self.base = len(self.alphabet)
        self.n = 0
        self.length = 0

    def reset(self):
        self.i = 0

    def generate(self):
        password = ''
        temp = self.n
        while len(password) < self.length:
            rest = temp % self.base
            temp = temp // self.base
            password = self.alphabet[rest] + password

        if password == self.alphabet[-1] * self.length:
            self.length += 1
            self.n = 0
        else:
            self.n += 1
        return password
g = BruteForceGenerator()
print(g.generate() for i in range(1000))

Ответы (1 шт):

Автор решения: n1tr0xs

Потому что g.generate() for i in range(1000) - это генератор, а не ваши пароли.
Решение:

g = BruteForceGenerator()
for i in range(1000):
    print(g.generate())

Другое решение (sep='\n' нужен, чтобы каждый пароль выводился с новой строки):

g = BruteForceGenerator()
print(*(g.generate() for i in range(1000)), sep='\n') 
→ Ссылка