Skip to content

Commit 887fa5b

Browse files
authored
Merge pull request #4132 from raulG91/raulG91
#23 - Python
2 parents bb63ac2 + ecb512e commit 887fa5b

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
class SingletonMeta(type):
2+
3+
_instances = {}
4+
def __call__(cls,*args,**kwargs):
5+
if cls not in cls._instances:
6+
instance = super().__call__(*args,**kwargs)
7+
cls._instances[cls] = instance
8+
return cls._instances[cls]
9+
def clear(cls):
10+
cls._instances.pop(cls)
11+
12+
class Singleton(metaclass=SingletonMeta):
13+
def syHello(self):
14+
print("Hello from Singleton class")
15+
16+
s1 = Singleton()
17+
s2 = Singleton()
18+
19+
if id(s1) == id(s2):
20+
print("Both instances have same id")
21+
else:
22+
print("Intances are different")
23+
24+
class User(metaclass=SingletonMeta):
25+
def __init__(self,id,username,name,email):
26+
self.id = id
27+
self.username = username
28+
self.name = name
29+
self.email = email
30+
def get_name(self):
31+
return self.name
32+
def get_id(self):
33+
return self.id
34+
def get_username(self):
35+
return self.username
36+
def get_email(self):
37+
return self.email
38+
def close_session(self):
39+
User.clear()
40+
41+
42+
user = User(1,"user1","Juan","[email protected]")
43+
id1 = id(user)
44+
print(f'Id for object: {id1}')
45+
print(f'User Id {user.get_id()}')
46+
print(f'User name {user.get_name()}')
47+
user.close_session()
48+
user2 = User(2,"user2","Luna","[email protected]")
49+
id2 = id(user2)
50+
print(f'Id for object: {id2}')
51+
print(f'User Id {user2.get_id()}')
52+
print(f'User name {user2.get_name()}')
53+
user2.close_session()

0 commit comments

Comments
 (0)