Forum >> Principianti >> [Risolto] Impostare classe figlia

Pagina: 1

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 ---
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.