Skip to content

Instantly share code, notes, and snippets.

@maiamcc
Created January 28, 2015 21:11
Show Gist options
  • Save maiamcc/1fca47ec51ab4b1351ff to your computer and use it in GitHub Desktop.
Save maiamcc/1fca47ec51ab4b1351ff to your computer and use it in GitHub Desktop.
Attempt at a singleton class for Tracker object
class TrackerWrapper:
class __TrackerWrapper:
def __init__(self):
self.tracker = Tracker.SparqlConnection.get(None)
def __str__(self):
return repr(self)
instance = None
def __init__(self):
if not TrackerWrapper.instance:
TrackerWrapper.instance = TrackerWrapper.__TrackerWrapper()
def __getattr__(self, name):
return getattr(self.instance, name) # not actually sure if this is necessary, it's code left over from example
# compare to example at http://python-3-patterns-idioms-test.readthedocs.org/en/latest/Singleton.html
In [58]: a = TrackerWrapper()
In [59]: b = TrackerWrapper()
In [60]: c = TrackerWrapper()
In [61]: a
Out[61]: <__main__.TrackerWrapper at 0x7fdcac023dd8>
In [62]: b
Out[62]: <__main__.TrackerWrapper at 0x7fdcac023da0>
In [63]: c
Out[63]: <__main__.TrackerWrapper at 0x7fdcac023d68>
In [65]: print(a)
<__main__.TrackerWrapper object at 0x7fdcac023dd8>
In [66]: print(b)
<__main__.TrackerWrapper object at 0x7fdcac023da0>
In [67]: print(c)
<__main__.TrackerWrapper object at 0x7fdcac023d68>
@maiamcc
Copy link
Author

maiamcc commented Jan 28, 2015

In [14]: t1 = Tracker.SparqlConnection.get()

In [15]: t2 = Tracker.SparqlConnection.get()

In [16]: t1
Out[16]: <main.TrackerSparqlBackend object at 0x7f4074046990 (TrackerSparqlBackend at 0x2296870)>

In [17]: t2
Out[17]: <main.TrackerSparqlBackend object at 0x7f4074046990 (TrackerSparqlBackend at 0x2296870)>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment