为什么我不能在创建实例之前调用某些 类 的方法?理解逻辑
Why I can't call methods for certain classes before creating instances? Understanding the logic
我有两个例子可以帮助你理解我的意思
示例 1 有效:
import pandas as pd
import numpy as np
x_grid = np.linspace(-3, 3, 1000)
df = pd.read_excel('somefile.xlsx').dropna()
我在创建 DataFrame 对象的实例时调用了方法 dropna()。
示例 2 不起作用:
from statsmodels.nonparametric.kde import KDEUnivariate
kde = KDEUnivariate(df).fit().evaluate(x_grid)
为了让它工作,我需要先像这样创建 Class 的实例:
kde = KDEUnivariate(df)
然后一次调用一个方法
kde.fit()
grid = kde.evaluate(x_grid)
这背后的逻辑是什么?
感谢您的帮助!
当您尝试这样做时:
import pandas as pd
import numpy as np
x_grid = np.linspace(-3, 3, 1000)
df = pd.read_excel('somefile.xlsx').dropna()
from statsmodels.nonparametric.kde import KDEUnivariate
kde = KDEUnivariate(df).fit().evaluate(x_grid)
那么你实际上传递了fit()方法的return值,也就是'NoneType'
.
如果你这样做也是一样的:
kde = KDEUnivariate(df)
kde = kde.fit()
grid = kde.evaluate(x_grid)
但你不想要这个。
你想要一个实例化,然后拟合KDEUnivariate()
对象。
然后对其进行评估。
这就是为什么调用机制的适当方式如下:
kde = KDEUnivariate(df)
kde.fit()
grid = kde.evaluate(x_grid)
在这种情况下,KDEUnivariate()
instance 的 evaluate()
方法适用于 KDEUnivariate()
instance 本身,以及它的拟合参数,not return value of KDEUnivariate()
instance 的 fit()
方法。
我有两个例子可以帮助你理解我的意思
示例 1 有效:
import pandas as pd
import numpy as np
x_grid = np.linspace(-3, 3, 1000)
df = pd.read_excel('somefile.xlsx').dropna()
我在创建 DataFrame 对象的实例时调用了方法 dropna()。
示例 2 不起作用:
from statsmodels.nonparametric.kde import KDEUnivariate
kde = KDEUnivariate(df).fit().evaluate(x_grid)
为了让它工作,我需要先像这样创建 Class 的实例:
kde = KDEUnivariate(df)
然后一次调用一个方法
kde.fit()
grid = kde.evaluate(x_grid)
这背后的逻辑是什么? 感谢您的帮助!
当您尝试这样做时:
import pandas as pd
import numpy as np
x_grid = np.linspace(-3, 3, 1000)
df = pd.read_excel('somefile.xlsx').dropna()
from statsmodels.nonparametric.kde import KDEUnivariate
kde = KDEUnivariate(df).fit().evaluate(x_grid)
那么你实际上传递了fit()方法的return值,也就是'NoneType'
.
如果你这样做也是一样的:
kde = KDEUnivariate(df)
kde = kde.fit()
grid = kde.evaluate(x_grid)
但你不想要这个。
你想要一个实例化,然后拟合KDEUnivariate()
对象。
然后对其进行评估。
这就是为什么调用机制的适当方式如下:
kde = KDEUnivariate(df)
kde.fit()
grid = kde.evaluate(x_grid)
在这种情况下,KDEUnivariate()
instance 的 evaluate()
方法适用于 KDEUnivariate()
instance 本身,以及它的拟合参数,not return value of KDEUnivariate()
instance 的 fit()
方法。