如何在python中创建继承自turtle Module的子类

时间:2012-02-25 04:48:27

标签: python inheritance subclass turtle-graphics

所以,我正在尝试学习python,每次我在这里发帖都感觉就像放弃...

我正在尝试制作自己的龟类。龟。

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

my_turtle = TurtleGTX()
my_turtle.forward(10)

提供Traceback:AttributeError:'TurtleGTX'对象没有属性'_position'。然后我学习的是一个“私人可移动”,根据官方python教程,我可以在我的子类TurtleGTX中修改/覆盖。如何使用像乌龟一样大的程序看起来相当困难,这意味着我错过了一个更简单的问题解决方案。最后我了解到了这一点,但我仍然希望社区运行它,看看是否有一种优雅的方式来创建turtle.Turtle的子类。 (下一步是让乌龟的行为与标准乌龟不同)

所以下面的评论让我觉得也许我可以做到这一点:

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


my_turtle = TurtleGTX()
my_turtle.forward(100)

实际运行!现在我要看看它带给我什么......有些东西告诉我,我可能已经向前退了两步,因为这意味着我将无法在我的子类上初始化任何东西......

2 个答案:

答案 0 :(得分:3)

总结伊格纳西奥的回答和orokusaki的评论你可能应该写一些像

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)

答案 1 :(得分:2)

如果您在子类中重新定义方法(例如__init__()),那么您有责任调用父方法,以便尊重父方的行为。