Question

Donc, j'essaie d'apprendre Python et chaque fois que je poste une question ici, c'est comme céder ...

J'essaye de faire ma propre classe de tortue.

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

my_turtle = TurtleGTX()
my_turtle.forward(10)

Donne le traceback: attributError: 'TurtleGTX' L'objet n'a pas d'attribut '_Position'. Ce que j'apprends alors est un "privé vairable" qui, selon le tutoriel Python officiel, je peux malir / remplacer dans ma sous-classe TurtleGTX. Comment procéder avec un programme aussi grand que Turtle semble plutôt difficile et implique que je manque une solution plus simple au problème. En fin de compte, j'ai appris et c'était le point, mais je voudrais toujours l'exécuter par la communauté pour voir s'il existe un moyen élégant de créer une sous-classe de tortue. (L'étape suivante consiste à faire en sorte que votre tortue se comporte différente de la tortue standard)

Donc, un commentaire ci-dessous m'a fait penser que je pourrais peut-être faire ceci:

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


my_turtle = TurtleGTX()
my_turtle.forward(100)

Quelles courses réelles! Maintenant, je vais voir où cela me conduit ... quelque chose me dit que j'aurais peut-être fait un pas en avant à deux pas car cela signifie que je ne pourrai rien initialiser sur ma sous-classe ...

Était-ce utile?

La solution

Arrondir la réponse d'Ignacio et le commentaire d'Orokusaki, vous devriez probablement écrire quelque chose comme

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)

Autres conseils

Si vous redéfinissez une méthode (comme __init__()) Dans une classe d'enfants, il est de votre responsabilité d'appeler la méthode du parent afin de respecter le comportement du parent.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top