fix singleton typeing and __init__
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
# Python imports
|
||||
from typing import Type, TypeVar, Any
|
||||
|
||||
# Lib imports
|
||||
|
||||
@@ -11,10 +12,12 @@ class SingletonError(Exception):
|
||||
|
||||
|
||||
|
||||
T = TypeVar('T', bound='Singleton')
|
||||
|
||||
class Singleton:
|
||||
_instance = None
|
||||
|
||||
def __new__(cls, *args, **kwargs):
|
||||
def __new__(cls: Type[T], *args: Any, **kwargs: Any) -> T:
|
||||
if cls._instance is not None:
|
||||
logger.debug(f"'{cls.__name__}' is a Singleton. Returning instance...")
|
||||
return cls._instance
|
||||
@@ -22,7 +25,7 @@ class Singleton:
|
||||
cls._instance = super(Singleton, cls).__new__(cls)
|
||||
return cls._instance
|
||||
|
||||
def __init__(self):
|
||||
def __init__(self) -> None:
|
||||
if self._instance is not None:
|
||||
return
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
# Python imports
|
||||
from typing import Type, TypeVar, Any
|
||||
|
||||
# Lib imports
|
||||
|
||||
@@ -11,16 +12,18 @@ class SingletonError(Exception):
|
||||
|
||||
|
||||
|
||||
T = TypeVar('T', bound='SingletonRaised')
|
||||
|
||||
class SingletonRaised:
|
||||
_instance = None
|
||||
|
||||
def __new__(cls, *args, **kwargs):
|
||||
def __new__(cls: Type[T], *args: Any, **kwargs: Any) -> T:
|
||||
if cls._instance is not None:
|
||||
raise SingletonError(f"'{cls.__name__}' is a Singleton. Cannot create a new instance...")
|
||||
|
||||
cls._instance = super(Singleton, cls).__new__(cls)
|
||||
cls._instance = super(SingletonRaised, cls).__new__(cls)
|
||||
return cls._instance
|
||||
|
||||
def __init__(self):
|
||||
if cls._instance is not None:
|
||||
def __init__(self) -> None:
|
||||
if self._instance is not None:
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user