On 30/06/20 5:14 AM, joseph pareti wrote:
I have piece of code with constructs as follows:
*class* *SentimentNetwork**:*
*def* __init__*(*self*,* reviews*,* labels*,* hidden_nodes *=* 10*,*
learning_rate *=* 0.1*):*
np*.*random*.*seed*(*1*)*
self*.*init_network*(**len**(*self*.*review_vocab*),*hidden_nodes*,*
1*,* learning_rate*)*
*def* init_network*(*self*,* input_nodes*,* hidden_nodes*,* output_nodes
*,* learning_rate*):*
# Store the number of nodes in input, hidden, and output layers.
self*.*input_nodes *=* input_nodes
self*.*hidden_nodes *=* hidden_nodes
self*.*output_nodes *=* output_nodes
which makes me think about the redundant usage of* init_network:*
1. as a method, AND
2. as a property
Let's imagine this code-functionality, but where all of the
initialisation is performed in the single __init__ method:-
- there would be four lines of code instead of eight, saving typing-time
and reading-time
- when reading the code, we would not have to 'jump' our eyes from
__init__() to init_network, just to see what happens at instantiation
So, why bother?
(is that the nub of your question?)
Consider now the pertinent four lines:
- seed the PRNG (Pseudo-Random Number Generator)
- set number of input_nodes
- set number of hidden_nodes
- set number of output_notes
per my favorite (hi-brown and highly-technical) TV program(me): "which
of these is not like the others?"
Add to such thinking, that there is apparently much more in the
initialiser than illustrated (presumably for brevity - thanks!), and you
can comprehend that there are several *different* functions that all
have to happen upon instantiation.
So, although init_network() as a separate method is *functionally*
unnecessary, by separating those tasks from 'everything else that has to
happen' (and presumably also bunching groups of those tasks together
under applicable headings!) is a very helpful *documentation* technique
- in fact, I put it to you, that the name of the method is more helpful
to a reader, than is the explanatory comment! Your thoughts?
(which #comment 'should' be a docstring, BTW)
The word "property" may have a slightly different definition in Python
than in other programming languages you have used. If that part of the
question hasn't been adequately-covered (albeit en-passant) please
explain further...
Finally, please be aware that there is a Python-Tutor Discussion List
for the pleasure of both learners and tutors.
--
Regards =dn
--
https://mail.python.org/mailman/listinfo/python-list