Генератор пароля с классами Python

Я пытался написать генератор пароля. И мне надо чтобы этот код содержал следующие пункты:

  1. ООП

  2. Lambda

  3. Рекурсия

  4. list comprehension

  5. SOLID принцип(Обязательно первый и второй принцип) Это мой код:

     import random,string
    
     class Passw():
       generators = [lambda: random.choice(string.ascii_lowercase),
       lambda: random.choice(string.ascii_uppercase),
       lambda: random.choice(string.digits),
       lambda: random.choice(string.punctuation)]
       replacements = {"e":"3","i":"1","a":"@","o":"0","b":"6","m":"w","s":"$","8":"&","l":"L","t":"7","q":"o|","w":"W","r":"R","p":"|o"}
       def __init__(self,num):   #length of password
         self.n = num
       def gen_password(self):
         password="".join([replacements[x] if x in replacements else x for x in gen_passwd(n-1)])[:n]
    
      pasw=Passw(int(input()))
      pasw.gen_password()
    

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

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

Ваш код заработает если его поправить примерно так:

import random,string

class Passw:
    generators = [lambda: random.choice(string.ascii_lowercase),
                  lambda: random.choice(string.ascii_uppercase),
                  lambda: random.choice(string.digits),
                  lambda: random.choice(string.punctuation)]
    replacements = {"e":"3","i":"1","a":"@","o":"0","b":"6","m":"w","s":"$","8":"&","l":"L",
                    "t":"7","q":"o|","w":"W","r":"R","p":"|o"}

    def __init__(self, num):   #length of password
        self.num = num
        self.password = self.get_password()

    def gen_password(self, n):
        if n==0: return ''
        return Passw.generators[random.randint(0,3)]() + self.gen_password(n-1)

    def get_password(self):
        return ''.join([Passw.replacements.get(i, i) for i in self.gen_password(self.num)])

pasw=Passw(int(input()))
pasw.password
'''
5
'[KEQj'
→ Ссылка