Skip to content

StephanSchmiedmayer/SingletonPython

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Singleton

About the project

A clean, transparent and easy to use python singleton wrapper.

Installation

pip install better-singleton

Usage

Singleton definition:

from better_singleton import singleton

@singleton
class Counter:
    def __init__(self, initial_counter):
        self.counter = initial_counter

    def inc(self):
        self.counter += 1

Usage:

counter1 = Counter(1)
counter1.inc()
counter2 = Counter(1)
print(counter2.counter)
# >>> 2

Ensures that at most only one instance of the class exists at any point in time. __init__ and __new__ of the original class get called only once: the first time an instance is created. This instance will from then on be the singleton instance. Every following call to the constructor of the wrapped class returns the singleton instance.

The wrapped class cannot have a class variable called _singleton as that stores the singleton instance. This will throw an error before execution begins.

Not thread safe during first initialization.

Roadmap

Contributing

Publish

  1. Bump version in pyproject.toml
  2. poetry update
  3. poetry build
  4. poetry publish

License

See License.md.

Contributors

Stephan Schmiedmayer

Acknowledgments

Team Incentive Mechanism App Cluster of "Advanced Python Programming Spring 2022" Nour Bouzid, Yanjie Li, Stephan Schmiedmayer and Leonhard Zirus under supervision of Valentin Zieglmeier

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages