Grata
Şubat 6, 2022, 11:43öö
1
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
Grata
Şubat 6, 2022, 12:18ös
3
DrShahinstein:
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) ***********
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
Grata
Şubat 6, 2022, 12:29ös
5
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.
Öncelikle herkese iyi forumlar.
Bugün python ile çalışırken listeler üzerinde bazı fonksiyonlar kullanmaya çalıştım fakat nesne üzerinde birtürlü çalıştıramadım.Örnek vermek gerekirse:
print([4,3,2,1].sort())
# None
Fakat diğer proglamlama dillerinde nesne üzerinde çalışılabiliyor:
// javascript
[4,3,2,1].sort();
// [1,2,3,4]
# ruby
[4,3,2,1].sort()
# [1,2,3,4]
Aynı sorun ters çevirme metotlarında da var:
// javascript
[4,3,2,1].reverse();
// [1,2,3,4]
# python
print([4,3,2,1].reverse())…
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
Grata
Şubat 6, 2022, 12:33ös
7
Aa evet hocam. Kusura bakmayın, cahilliğime verin.
Teşekkürler.
1 Beğeni