Forum
  
    >> 
    
      Principianti
    
  
  >>
  
    [Risolto] Impostare classe figlia
  
  
  
  
  
  
  
   
  
    
    
    
      
      
  
Pagina: 1
  
Esegui il login per scrivere una risposta.
      
  
      
    Pagina: 1
| 
          
Scritto da h  | 
        
          
 2016-01-07 14:09:27 - [Risolto] Impostare classe figlia 
  
 | 
      
| 
          
          
             Salve a tutti ho una domanda sul ruolo di super nella dichiarazione di una classe figlia. Mi spiego meglio, la classe madre:
 
          
          
            
          
          
        class Neuron(object):
    
    """docstring for Neuron"""
    def __init__(self, dim, ID):
        self.ID=ID
        self.dim=dim
        self.pos=[rnd.random_sample() for i in range(self.dim)]
        self.label=0
 
la classe figlia: class nearestClassNeuron(Neuron):
    """docstring for nearestClssNeuron"""
    def __init__(self, dim, ID, label):
        self.ID=ID
        self.dim=dim
        self.label=label
 
Prima di tutto vorrei chiedere io devo costruire questa classe figlia a partire dalla classe madre, vorrei quindi costruirla in modo diverso da quello che ho fatto (ma non so come!!!), vorrei che la classe nearestClassNeuron ereditasse da Neuron, oltre che i metodi anche gli attributi "dim" e "ID", come si può fare? La seconda domanda è il ruolo di "super": a cosa serve costruire la classe figlia così aggiungendo la riga: class nearestClassNeuron(Neuron):
    """docstring for nearestClssNeuron"""
    def __init__(self, dim, ID, label):
        self.ID=ID
        self.dim=dim
        self.label=label
        super(nearestClassNeuron, self).__init__(self, dim, ID)  voglio sottolineare che costruito così mi da un errore:
TypeError: __init__() takes exactly 3 arguments (4 given)mi interesserebbe, più che risolvere l'errore, capire il ruolo e il vantaggio di super usato nella costruzione della classe figlia (a quel punto penso risolverei anche l'errore). Grazie a tutti. --- Ultima modifica di h in data 2016-01-09 23:45:58 ---  | 
      |
| 
          
Scritto da Claudio_F  | 
        
          
 2016-01-09 15:32:16 - Re: Impostare classe figlia 
  
 | 
      
| 
          
          
             Per chiamare __init__ della superclasse si possono usare due sistemi:
 class nearestClassNeuron(Neuron):
    def __init__(self, dim, ID, label):
        super(nearestClassNeuron, self).__init__(dim, ID)
        self.label = label
class nearestClassNeuron(Neuron):
    def __init__(self, dim, ID, label):
        Neuron.__init__(self, dim, ID)
        self.label = label
*** Il codice va evidenziato con il simbolo    di fianco ai colori per non perdere l'indentazione *** | 
      
Pagina: 1
Esegui il login per scrivere una risposta.
  
 di fianco ai colori per non perdere l'indentazione ***