Domanda

Quindi, sto cercando di imparare Python e ogni volta che poso una domanda qui mi sembra di arrendersi ...

Sto cercando di fare la mia classe di tartaruga. Turtle.

    import turtle
class TurtleGTX(turtle.Turtle):
    """My own version of turtle"""
    def __init__(self):
        pass

my_turtle = TurtleGTX()
my_turtle.forward(10)

Dà il traceback: AttributeError: L'oggetto "TurtleGtx" non ha attributo "_position". Che allora imparo è un "vairable privato" che secondo il tutorial di Python officale posso mangle/sovrascrivere nella mia sottoclasse Turtlegtx. Come farlo con un programma grande come la tartaruga sembra piuttosto difficile e implica che mi manca una soluzione più semplice al problema. Alla fine ho imparato e questo era il punto, ma vorrei comunque eseguirlo dalla comunità per vedere se esiste un modo elegante per creare una sottoclasse di tartaruga. (Il prossimo passo è che la tua tartaruga si comporti diversa dalla tartaruga standard)

Quindi un commento qui sotto mi ha fatto pensare che forse potrei farlo:

import turtle
class TurtleGTX(turtle.Turtle):
    """My own version of turtle"""


my_turtle = TurtleGTX()
my_turtle.forward(100)

Quali correzioni reali! Ora vedrò dove mi porta ... qualcosa mi dice che avrei potuto fare un passo avanti a due passo indietro perché questo significa che non sarò in grado di inizializzare nulla sulla mia sottoclasse ...

È stato utile?

Soluzione

Arrotonda la risposta di Ignacio e il commento di Orokusaki probabilmente dovresti scrivere qualcosa di simile

import turtle
class TurtleGTX(turtle.Turtle):
    """My own version of turtle"""
    def __init__(self,*args,**kwargs):
        super(TurtleGTX,self).__init__(*args,**kwargs)
        print("Time for my GTX turtle!")

my_turtle = TurtleGTX()
my_turtle.forward(100)

Altri suggerimenti

Se ridefinite un metodo (come __init__()) In una classe figlio quindi è tua responsabilità chiamare il metodo del genitore per rispettare il comportamento del genitore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top