Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 22, 2016 19:13:44

Konstantin_tr
Зарегистрирован: 2016-10-02
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помощь в разборе кода

Уважаемые специалисты, вопрос такого порядка:
Объясните 3 строчку кода, что присваивается свойству hiddenlayer?: в каких случаях используется такая конструкция?

 class A:
def_init_ (self,num_hidden, hidden_layer_bias)
[b]
[i]self.hiddenlayer = B(num_hidden, hidden_layer_bias)
[/i][/b]
class B:
def __init__(self, num_neurons, bias):
 self.bias = bias if bias else random.random()
 self.neurons = []
 for i in range(num_neurons):
 self.neurons.append(Neuron(self.bias))

Офлайн

#2 Окт. 23, 2016 01:28:59

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Помощь в разборе кода

Konstantin_tr
Объясните 3 строчку кода
У тебя код с ошибками. Код надо писать без каких-либо правок, а потом спрашивать про номер строки. А так у тебя даже класс A повреждён, так как запись def_init_ - это запись def __init__ , которая повредилась.
В общем, пиши код точно, чтобы спрашивать про него.

Konstantin_tr
что присваивается свойству hiddenlayer?
Создаётся объект класса B и присваивается атрибуту hiddenlayer в объекте класса A. Потом объект класса A сможет им пользоваться во время своей основной работы.
Считай, что ты как бы припрятал объект класса B внутри объекта класса A.

Konstantin_tr
в каких случаях используется такая конструкция?
Вообще, так делать не принято, так как нарушается SOLID (модель ООП). Нужно сделать объект класса B снаружи и передать его (уже готовый) в __init__ объекта класса A.

wiki. SOLID

Буква O нарушается. Изменение класса B влечёт за собой изменение класса A.



Отредактировано py.user.next (Окт. 23, 2016 01:35:16)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version