문제

그래서, 나는 파이썬을 배우려고 노력하고 있습니다. 나는 여기에 질문을 게시 할 때마다 ...

나는 내 자신의 turtle을 만들려고 노력하고 있습니다.

    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'이 없습니다. 그런 다음 배운 것은 "비공개 유래"입니다. 이는 나의 Subclass TurtlegTx에서 Subclass TurtlegTX에서 mangle / override를 할 수 있습니다. 거북이만큼 큰 프로그램 으로이 작업을 수행하는 방법은 오히려 어렵고 문제에 대한 간단한 해결책을 누락하는 것을 의미합니다. 결국 나는 배웠고 그 점이었습니다. 그러나 나는 거북이의 하위 클래스를 만드는 우아한 방법이 있는지 확인하기 위해 지역 사회가 그것을 운영으로 운영하고 싶습니다. (다음 단계는 당신의 거북이가 표준 거북이 다른 것으로 간주하는 것입니다)

아래의 코멘트가 아마 내가 이것을 할 수 있다고 생각하게 만들었습니다.

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


my_turtle = TurtleGTX()
my_turtle.forward(100)
.

실제로 실행됩니다! 이제 저는 나를 인도하는 곳을 보게 될 것입니다 ... 뭔가가 나에게 1 단계를 앞으로 나아갈 수 있음을 알려줍니다. 두 단계의 단계는 내 서브 클래스에서 아무 것도 초기화 할 수 없을 것입니다 ...

도움이 되었습니까?

해결책

Ignacio의 답변과 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)
.

다른 팁

하위 클래스에서 메소드 (예 : __init__())를 재정의하면 부모의 동작을 존중하도록 부모의 메소드를 호출하는 것은 귀하의 책임입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top