#!/usr/bin/python3.4

# http://python-3-patterns-idioms-test.readthedocs.io/en/latest/Singleton.html
class OnlyOne:
    class __OnlyOne:
        def __init__(self, arg):
            self.val = arg
        def __str__(self):
            return repr(self) * self.val
    instance = None
    def __init__(self, arg):
        if not OnlyOne.instance:
            OnlyOne.instance = OnlyOne.__OnlyOne(arg)
        else:
            OnlyOne.instance.val = arg
    def __getattr__(self, name):
        return getattr(self.instance, name)

x = OnlyOne('sausage')
print(x)
y = OnlyOne('egg')
print(y)
z = OnlyOne('spam')
print(z)
print(x)
print(y)
