我有以下课程(将用于扩展现有的课程scipy.stats.pareto
):
class pareto(scipy.stats.pareto):
def __init__(self, b):
super().init(b)
return
当我现在运行以下代码时:
u=pareto(2)
u.cdf(1)
我得到一个错误。但是,当我运行以下代码时:
u=scipy.stats.pareto(2)
u.cdf(1)
代码运行并返回
0.0
。我希望第一个代码段也能做到吗? 最佳答案
scipy.stats.pareto
不是类。它是一个类的实例:
scipy.stats.distributions.pareto_gen
我们可以为自己的类构建类似的接口,例如:
码:
import scipy.stats as stats
class pareto(stats.distributions.pareto_gen):
def __new__(cls, *args, **kwargs):
# get a `pareto` instance
self = stats.distributions.pareto_gen(a=1.0, name="pareto")
# call the instance with desired setup
return self(*args, **kwargs)
def __init__(self, *args, **kwargs):
# already called __init__()
pass
测试代码:
u = stats.pareto(2)
print(u.cdf(1))
u = pareto(2)
print(u.cdf(1))
结果:
0.0
0.0