간단히 "012"를 구현하는 데 사용되는 새을 정의하는 기본 클래스로 구현 된이 간단한 프로그램이 있습니다. 그러나 나는 더 이상 초기화에 방법을 인수를 보낼 수 - 나는 내가 어떻게해야합니까 때파이썬 덮어 쓰기 __new__은 __init__에 인수를 보낼 수 없습니다.
이class Singleton(object):
_instances = {}
def __new__(cls, *args, **kwargs):
print(args, kwargs)
if cls._instances.get(cls, None) is None:
cls._instances[cls] = super(Singleton, cls).__new__(cls, *args, **kwargs)
return Singleton._instances[cls]
class OneOfAKind(Singleton):
def __init__(self):
print('--> OneOfAKind __init__')
Singleton.__init__(self)
class OneOfAKind2(Singleton):
def __init__(self, onearg):
print('--> OneOfAKind2 __init__')
Singleton.__init__(self)
self._onearg = onearg
x = OneOfAKind()
y = OneOfAKind()
print(x == y)
X = OneOfAKind2('testing')
출력은 다음과 같습니다 : 싱글에서 새로운 슈퍼 전화를 "형식 오류) 객체 (매개 변수를 사용하지 않는"
() {}
Traceback (most recent call last):
File "./mytest.py", line 29, in <module>
x = OneOfAKind()
File "./mytest.py", line 10, in __new__
cls._instances[cls] = super(Singleton, cls).__new__(cls,(), {})
TypeError: object() takes no parameters
을 파이썬 3을 사용하고 있습니까? – BorrajaX