forked from CodeMouse92/DeadSimplePython
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsecret_agent_property.py
More file actions
85 lines (60 loc) · 1.95 KB
/
secret_agent_property.py
File metadata and controls
85 lines (60 loc) · 1.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
class SecretAgent:
_codeword = ""
def __init__(self, codename):
self.codename = codename
self._secrets = []
def __del__(self):
print(f"Agent {self.codename} has been disavowed!")
def remember(self, secret):
self._secrets.append(secret)
@classmethod
def inform(cls, codeword):
cls._codeword = codeword
@staticmethod
def inquire(question):
print("I know nothing.")
@classmethod
def _encrypt(cls, message, *, decrypt=False):
code = sum(ord(c) for c in cls._codeword)
if decrypt:
code = -code
return ''.join(chr(ord(m) + code) for m in message)
# METHOD 1
# def _getsecret(self):
# return self._secrets[-1] if self._secrets else None
# def _setsecret(self, value):
# self._secrets.append(self._encrypt(value))
# def _delsecret(self):
# self._secrets = []
# secret = property(fget=_getsecret, fset=_setsecret, fdel=_delsecret)
# METHOD 2
# secret = property()
# @secret.getter
# def secret(self):
# return self._secrets[-1] if self._secrets else None
# @secret.setter
# def secret(self, value):
# self._secrets.append(self._encrypt(value))
# @secret.deleter
# def secret(self):
# self._secrets = []
# METHOD 3
@property
def secret(self):
return self._secrets[-1] if self._secrets else None
@secret.setter
def secret(self, value):
self._secrets.append(self._encrypt(value))
@secret.deleter
def secret(self):
self._secrets = []
mouse = SecretAgent("Mouse")
mouse.inform("Parmesano")
print(mouse.secret) # prints "None"
mouse.secret = "12345 Main Street"
print(mouse.secret) # prints "ϗϘϙϚϛφϳЇЏДφϹКИЋЋК"
mouse.secret = "555-1234"
print(mouse.secret) # prints "ϛϛϛϓϗϘϙϚ"
print(mouse._secrets) # prints two values
del mouse.secret
print(mouse._secrets) # prints empty list