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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file simple_singleton-2.0.0.tar.gz.

File metadata

  • Download URL: simple_singleton-2.0.0.tar.gz
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.7.17 Linux/6.2.0-1012-azure

File hashes

Hashes for simple_singleton-2.0.0.tar.gz
Algorithm Hash digest
SHA256 5f5a1292305940c15e6eaf837cff68e81b19142dd07a0868c93cb4c492ef22ad
MD5 27133d69941c3f4c295009855ff82021
BLAKE2b-256 1d767e70d62ce4af2f89f557406b356589ca3509253dcbbfdb8f7292808d6e0f

See more details on using hashes here.

File details

Details for the file simple_singleton-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: simple_singleton-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 16.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.7.17 Linux/6.2.0-1012-azure

File hashes

Hashes for simple_singleton-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 831c4b082ecd37091a86eba370dc9788601c41bf15c896b07a9a242c8b008f43
MD5 4780e4c919aa83fe4289373ea35ed40d
BLAKE2b-256 4c2bfb243f5ee328ec582713cf2399adda4db44199e9e62525ba63afcb64e112

See more details on using hashes here.

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