Я хотел бы реализовать класс с именем MyClass. Этот класс должен быть одноэлементным, и он должен наследоваться от BaseClass.
В конце концов я нашел следующее решение:
import random
class Singleton(object):
_instances = {}
def __new__(cls, *args, **kwargs):
if cls not in cls._instances:
cls._instances[cls] = super(Singleton, cls).__new__(cls, *args, **kwargs)
return cls._instances[cls]
class BaseClass(object):
def __init__(self, data):
self.value = random.random()
self.data = data
def asfaa(self):
pass
class MyClass(BaseClass, Singleton):
def __init__(self, data=3):
super().__init__(data)
self.a = random.random()
inst = MyClass(3)
Evrythig работает правильно, если def __init__(self, data=3)
MyClass не имеет аргументов.
В противном случае я получаю ошибку
line 9, in __new__
cls._instances[cls] = super(Singleton, cls).__new__(cls, *args, **kwargs)
TypeError: object.__new__() takes exactly one argument (the type to instantiate)
Как передать любые аргументы в MyClass?