无法扩展 scipy.stats.multivariate_normal [__init__() 需要 1 到 2 个位置参数]
Trouble extending scipy.stats.multivariate_normal [__init__() takes from 1 to 2 positional arguments]
我正在尝试扩展基数 class (scipy.stats.multivariate_normal),但我在调用 super
的 __init__
:[=19 时遇到了一些困难=]
from scipy.stats import multivariate_normal
class MVGaussian(multivariate_normal):
def __init__(self, *args, **kwargs): # I want base class to handle all the arguments
super(MVGaussian, self).__init__(*args,**kwargs)
# def myMethod ...
我总是TypeError: __init__() takes from 1 to 2 positional arguments but 4 were given
我也试过 super().__init__(*args,**kwargs)
,或者 multivariate_normal.__init__(*args, **kwargs)
...
您正在尝试子class multivariate_normal
,但它不是 class,它是 class 的实例,它定义了 __call__
方法:
In [24]: isinstance(multivariate_normal, scipy.stats._multivariate.multivariate_normal_gen)
Out[24]: True
您必须子class scipy.stats._multivariate.multivariate_normal_gen
并创建您的 class 的实例才能使其表现得像 multivariate_normal
:
from scipy.stats._multivariate import multivariate_normal_gen
class MVGaussian(multivariate_normal_gen):
def __init__(self, *args, **kwargs):
super(MVGaussian, self).__init__(*args,**kwargs)
mv_gaussian = MVGaussian()
我正在尝试扩展基数 class (scipy.stats.multivariate_normal),但我在调用 super
的 __init__
:[=19 时遇到了一些困难=]
from scipy.stats import multivariate_normal
class MVGaussian(multivariate_normal):
def __init__(self, *args, **kwargs): # I want base class to handle all the arguments
super(MVGaussian, self).__init__(*args,**kwargs)
# def myMethod ...
我总是TypeError: __init__() takes from 1 to 2 positional arguments but 4 were given
我也试过 super().__init__(*args,**kwargs)
,或者 multivariate_normal.__init__(*args, **kwargs)
...
您正在尝试子class multivariate_normal
,但它不是 class,它是 class 的实例,它定义了 __call__
方法:
In [24]: isinstance(multivariate_normal, scipy.stats._multivariate.multivariate_normal_gen)
Out[24]: True
您必须子class scipy.stats._multivariate.multivariate_normal_gen
并创建您的 class 的实例才能使其表现得像 multivariate_normal
:
from scipy.stats._multivariate import multivariate_normal_gen
class MVGaussian(multivariate_normal_gen):
def __init__(self, *args, **kwargs):
super(MVGaussian, self).__init__(*args,**kwargs)
mv_gaussian = MVGaussian()