Veri Gizleme Sisteminde, Gizlenen Veriyi Gösteren Metot Nasıl Yapılır?

Arkadaşlar merhaba.

Eğlence amaçlı bir veri gizleme sistemi yapıyorum. Göstereyim:

gizlemeSistemi.py:

gosterr = None

def gizle(gizlenecek):  

    gosterr = gizlenecek

    for sira in range(len(gizlenecek)):

        gizlenecek = gizlenecek[:sira] + '*' + gizlenecek[sira+1:]

           

    print(gizlenecek)

   

    def goster():

        print(gosterr)

       

    goster()

index.py:

from gizlemeSistemi import gizle

gizle("deneme") 

# ******
# deneme

Bu şekilde yapınca hem gizlenmiş halini, hem de gerçek halini gösteriyor. Ama ben şöyle bir kullanım olunca gerçek halini göstersin istiyorum:

gizle("deneme").goster()

veya

sifre = gizle("1234")

sifre.goster()

Bunu nasıl yapabilirim?

Bir metot oluşturmak istediğiniz için bir class'a ihtiyacınız var.
Bu size fikir verir sanırım:

class HidePassword:
   def __init__(self, password):
      self.password = password
      self.status = True
      
   def hide_password(self):
      self.status = True

   def show_password(self):
      self.status = False

   def __str__(self):
      if self.status: 
         return len(self.password) * '*'
      else:
         return self.password

if __name__ == '__main__':
   password = HidePassword("9Qg-nH+Gvw6")
   print(password) # ***********
   password.show_password() 
   print(password) # 9Qg-nH+Gvw6
   password.hide_password() 
   print(password) ***********
   
4 Beğeni

Hocam merhaba, teşekkürler öncelikle.

Şöyle bir deneme yaptım:

from gizlemeSistemi import HidePassword

print(HidePassword("Selamke").show_password())

Ama None şeklinde bir çıktı alıyorum. Neden acaba?

Show password kullanmayınca normal şekilde şifreleniyor, burada bir sorun yok ama işte göstermiyor.

HidePassword sınıfı bir nesneye ihtiyaç duyuyor ama isterseniz böyle yapabilirsiniz:
https://pythonbasics.org/classmethod/

1 Beğeni

Hocam şu şekilde yaptım:

class HidePassword:

   def __init__(self, password):

      self.password = password

      self.status = True

         

   def hide_password(self):

      self.status = True

   @classmethod

   def show_password(self):

      self.status = False

   def __str__(self):

      if self.status:

         return len(self.password) * '*'

      else:

         return self.password

Yanlış mı yaptım? Halen None veriyor.

from gizlemeSistemi import HidePassword

sifre = HidePassword("deneme")

print(sifre)

cozumle = sifre.show_password()

print(cozumle)

Çünkü bir şey return edilmiyor.

Bu konuya bir bakın isterseniz.


class HidePassword:
   def __init__(self, password):
      self.password = password
      self.hidden = len(self.password) * '*'
      self.status = True
      
   def hide_password(self):
      self.status = True
      return self.hidden

   def show_password(self):
      self.status = False
      return self.password

   def __str__(self):
      if self.status: 
         return self.hidden
      else:
         return self.password

if __name__ == '__main__':
   password = HidePassword("9Qg-nH+Gvw6")
   print(password)
   password.show_password()
   print(password)
   password.hide_password()
   print(password)
   print(password.show_password())

Örneğin kodları bu şekilde değiştirerek bu classı kullanmayı deneyecek olursanız hem class instance’inin (sınıf örneğinin) döndüreceği değeri değiştirebildiğinizi hem de bu classın metodlarını kullanarak istediğiniz değerleri return edebildiğinizi göreceksiniz.

3 Beğeni

Aa evet hocam. Kusura bakmayın, cahilliğime verin.

Teşekkürler.

1 Beğeni