如何定义一个只有在没有参数传递给构造函数时才能实例化的类?

时间:2018-08-23 19:52:48

标签: php constructor parameter-passing instantiation

如何定义只能在没有参数的情况下实例化的类,并在将任何参数传递给构造函数时禁止实例化?

我的目标是强制实施某些类的集合,这些类应该是“简单的”并且用作模板。作为其一部分,我不希望在实例化期间将任何东西传递给构造函数。

通过构造函数传递任何内容时,我希望事情失败(运行时错误,致命错误,静态解释器错误检查等)

class Template()
{
    ...
}

new Template(); // okay
new Template($anything); // must not work

2 个答案:

答案 0 :(得分:4)

只要传递了任何东西,就引发异常:

class Foo {
    public function __construct(...$args) {
        if (count($args) > 0) {
            throw new Exception('No arguments!');
        }
    }
}

答案 1 :(得分:2)

for df1_row in df1.itertuples():
    for df2_row in df2.itertuples():
        if df2_row.TYPE.upper() == df1_row.TYPE.upper():
            df1_val_array = list(df1_row)
            df2_val_array = list(df2_row)
            df1_val_array = df1_val_array[2:]
            df2_val_array = df2_val_array[2:]
            df1_df2_gene_corr, df1_df2_gene_p_val = scipy.stats.spearmanr(df1_val_array, df2_val_array, axis=0, nan_policy='omit')
            correlation_dict[df2_row.TYPE.upper()] = df1_df2_gene_corr

# plot correlations
plt.plot(list(correlation_dict.keys()), correlation_dict.values())
plt.show()