Singleton example in Python
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
# Example of Singleton design pattern | |
# Copyright (C) 2011 Radek Pazdera | |
# This program is free software: you can redistribute it and/or modify | |
# it under the terms of the GNU General Public License as published by | |
# the Free Software Foundation, either version 3 of the License, or | |
# (at your option) any later version. | |
# This program is distributed in the hope that it will be useful, | |
# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
# GNU General Public License for more details. | |
# You should have received a copy of the GNU General Public License | |
# along with this program. If not, see <http://www.gnu.org/licenses/>. | |
class Singleton: | |
# Here will be the instance stored. | |
__instance = None | |
@staticmethod | |
def getInstance(): | |
""" Static access method. """ | |
if Singleton.__instance == None: | |
Singleton() | |
return Singleton.__instance | |
def __init__(self): | |
""" Virtually private constructor. """ | |
if Singleton.__instance != None: | |
raise Exception("This class is a singleton!") | |
else: | |
Singleton.__instance = self | |
# A little testing | |
s = Singleton() # Ok | |
#Singleton() # will raise exception | |
print s | |
s = Singleton.getInstance() | |
print s | |
s = Singleton.getInstance() | |
print s # will print the same instance as before |
This comment has been minimized.
This comment has been minimized.
Thanks bro, after Math-like Java Python is very unstable. |
This comment has been minimized.
This comment has been minimized.
Can you please look into this and let me know which one is the correct approach. Singleton Class in Python |
This comment has been minimized.
This comment has been minimized.
thanks, very good. |
This comment has been minimized.
This comment has been minimized.
Super! Thank you! |
This comment has been minimized.
This comment has been minimized.
FYI to anyone using this in the future, this is NOT thread safe. |
This comment has been minimized.
This comment has been minimized.
Any solution to this? |
This comment has been minimized.
This comment has been minimized.
Nice.. |
This comment has been minimized.
This comment has been minimized.
Well designed. |
This comment has been minimized.
This comment has been minimized.
== and != None should really be is and is not, but otherwise this is quite good. |
This comment has been minimized.
This comment has been minimized.
Thanks!! |
This comment has been minimized.
This comment has been minimized.
I made a slight variation of this that uses the functools |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
Thanks, so helpful!