Skip to main content

py-singleton

Singleton pattern for python 2 & 3.

Install

pip install py-singleton

Test

in the root folder, run pytest:

pytest

Dependencies

None

unit test needs pytest.

API

  • Apply class decorator singleton to any class;

  • Expected behaviors:

    • class can be instantiated as usual, but only one instance is created;
    • apis to access the class instance:
      @singleton
      class Server(object):
        pass
    
      srv = Server()
    

    or

      srv = Server.instance()
    
    • the function _init_() of decorated class will be called once and only once when the instance is created.

Example

from py_singleton import singleton

    @singleton
    class A(object):
        count = 0
        def __init__(self):
            A.count += 1

    a1 = A()
    a2 = A()
    a3 = A.instance()

    assert A.count == 1
    assert a1 is a2
    assert a1 is a3

Limitation

For best performance, the code to create instance is not thread-safe, however, after the instance is created it should be safe for multi-threading.

It is recommended to call instance() once during the initial phrase of your app in a single thread.

Download files

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

Source Distribution

py-singleton-1.0.0.tar.gz (2.9 kB view details)

Uploaded Source

File details

Details for the file py-singleton-1.0.0.tar.gz.

File metadata

  • Download URL: py-singleton-1.0.0.tar.gz
  • Upload date:
  • Size: 2.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.2

File hashes

Hashes for py-singleton-1.0.0.tar.gz
Algorithm Hash digest
SHA256 9922a69f6e6b9390e5c1b3d2b39e119d5fcffa92d9c3145de3b8533a93077fb7
MD5 23eb82e74fc101a5001b9db8af18455c
BLAKE2b-256 e94925659b2596ab0e536c168a90358e9cb4a70fd776955a6174a7fde76a9264

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.0.0 This release

1 file

0.9.3

1 file

0.9.2

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page