python,小白想文一个关于类中的方法问题
源码:
class GaussianProcessRegressor(MultiOutputMixin, RegressorMixin, BaseEstimator): def __init__(self,kernel=None,*,alpha=1e-10,optimizer="fmin_l_bfgs_b",n_restarts_optimizer=0,
normalize_y=False,copy_X_train=True,random_state=None,):
self.kernel = kernel
self.alpha = alpha
self.optimizer = optimizer
self.n_restarts_optimizer = n_restarts_optimizer
self.normalize_y = normalize_y
self.copy_X_train = copy_X_train
self.random_state = random_state
def fit(self, X, y):
if self.kernel is None:
self.kernel_ = C(1.0, constant_value_bounds="fixed") * RBF(
1.0, length_scale_bounds="fixed")
else:
self.kernel_ = clone(self.kernel)
self._rng = check_random_state(self.random_state)
if self.kernel_.requires_vector_input:
dtype, ensure_2d = "numeric", True
else:
dtype, ensure_2d = None, False
X, y = self._validate_data(
X,
y,
multi_output=True,
y_numeric=True,
ensure_2d=ensure_2d,
dtype=dtype,
)
在一个类中看到了如下表示X,y = self._validate_data(),小白想问一下,这是一个方法吗?为什么类中可以这样写
回答:
这个概念python称为解包,简化一下
def test(): return 1,2
a,b = test()
-----
a=1
b=2
还可以这么用
a,b = [1,2]a,b = (1,2)
python3还支持这样
a,*b = [1,2,3]---
a=1
b=[2,3]
在函数传参中使用
def test1(a,b,c): print(a,b,c)
def test2(*arg):
for i in arg:
print(i)
a = [1,2,3]
test(*a)
test2(*a)
-----
test1: 1 2 3
test2:
1
2
3
以上是 python,小白想文一个关于类中的方法问题 的全部内容, 来源链接: utcz.com/p/938333.html