Skip to main content

Simple way to create a singleton class.

Project description

Simple Python Singleton pattern

PyPI package PyPI version

This module provides a simple way to define a class as a singleton.

Install

You can install this python module via pip:

pip install simple-singleton

Otherwise the module can be downloaded from PyPI: https://pypi.org/project/simple-singleton/

Usage

  1. Import the module:
    from simple_signleton import Singleton
    
    or:
    from simple_signleton import SingletonArgs
    
  2. Create a class that uses one of the above meta classes:
    class NewClass(metaclass=Singleton):
        pass
    
    or:
    class NewClass(metaclass=SingletonArgs):
        pass
    

Difference between Singleton and SingletonArgs

The Singleton class is a very basic implementation of the singleton pattern. All instances of a class are equal. Even if they are initialized with different parameters:

instance1 = SingletonClass(param="value")
instance2 = SingletonClass(param="different_value")

assert instance1 == instance2  # True
print(instance2.param)         # "value"

If you do not want this behavior, use the SingletonArgs meta class. With this class only instances that are initialized with the same parameters are the equal:

instance1 = SingletonArgsClass(param="value")
instance2 = SingletonArgsClass(param="different_value")
instance3 = SingletonArgsClass(param="value")

assert instance1 == instance2  # False
assert instance1 == instance3  # True

print(instance2.param)         # "different_value"

Usage in multi-threaded environments

The Singleton and SingletonArgs meta classes are not thread-safe!

To use them in a multi-threaded environment, please use the

  • ThreadSingleton and
  • ThreadSingletonArgs

meta classes. They can be used exactly like the standard meta classes.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

simple_singleton-2.0.0.tar.gz (15.1 kB view hashes)

Uploaded Source

Built Distribution

simple_singleton-2.0.0-py3-none-any.whl (16.7 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page