From 358488cf5d05e64ddc07c38c7e125aab01548220 Mon Sep 17 00:00:00 2001 From: Mike Croucher Date: Sat, 28 Feb 2015 18:50:58 +0000 Subject: [PATCH] Ensure that object.__new__ never gets called with arguments --- GPy/core/parameterization/priors.py | 6 +++++- GPy/core/parameterization/transformations.py | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/GPy/core/parameterization/priors.py b/GPy/core/parameterization/priors.py index 6c7f655f..a4bbecb3 100644 --- a/GPy/core/parameterization/priors.py +++ b/GPy/core/parameterization/priors.py @@ -270,7 +270,11 @@ class Gamma(Prior): for instance in cls._instances: if instance().a == a and instance().b == b: return instance() - o = super(Prior, cls).__new__(cls, a, b) + newfunc = super(Prior, cls).__new__ + if newfunc is object.__new__: + o = newfunc(cls) + else: + o = newfunc(cls, a, b) cls._instances.append(weakref.ref(o)) return cls._instances[-1]() diff --git a/GPy/core/parameterization/transformations.py b/GPy/core/parameterization/transformations.py index 05051c92..7e15cee9 100644 --- a/GPy/core/parameterization/transformations.py +++ b/GPy/core/parameterization/transformations.py @@ -468,7 +468,11 @@ class Logistic(Transformation): for instance in cls._instances: if instance().lower == lower and instance().upper == upper: return instance() - o = super(Transformation, cls).__new__(cls, lower, upper, *args, **kwargs) + newfunc = super(Transformation, cls).__new__ + if newfunc is object.__new__: + o = newfunc(cls) + else: + o = newfunc(cls, lower, upper, *args, **kwargs) cls._instances.append(weakref.ref(o)) return cls._instances[-1]() def __init__(self, lower, upper):