无法扩展 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()

查看源代码了解更多信息:https://github.com/scipy/scipy/blob/8a6cf90358c40ab525dc4de5ffa74e4eed163eed/scipy/stats/_multivariate.py#L220-L430