파이썬_실전 프로젝트

거북이 모듈 만들기

이번에는 앞에서 만든 새로운 거북이 클래스를 별도의 모듈로 만들어 보겠습니다.

거북이를 사용할때는 아래처럼 파이썬의 기본 모듈을 import 를 했었습니다.

import turtle

 

그럼 새로 만든 클래스도 기본 모듈처럼 import 할수 있지 않을까요? 즉 이런걸 하고 싶은거죠.

import my_turtle

 

모듈 파일 생성

그러기 위해서는 my_turtle.py 라는 파일을 먼저 만들어야 합니다. 파일이름이 모듈이름이 되는겁니다.

my_turtle.py 의 내용

import turtle    # 상속을 받았기 때문에, 기본 모듈을 불러와야 합니다. 

class Turtle_new(turtle.Turtle):
    def box(self, pos_x, pos_y, x, y, color):
        self.penup()
        self.goto(pos_x - x/2,pos_y - y/2) 
        self.pendown()
        self.speed('fast')
        self.color(color)
        self.begin_fill()
        self.fd(x)
        self.left(90)
        self.fd(y)
        self.left(90)
        self.fd(x)
        self.left(90)
        self.fd(y)
        self.left(90)
        self.end_fill()

그리고 앞에서 만든 클래스를 그대로 붙여넣기 해줍니다. 상속을 받은 클래스이기 때문에, turtle 을 import 하는 명령어도 같이 넣어줘야 합니다.

 

그리고 원래 파일에서는 class 정의 부분을 지우고, import my_turtle 이라는 명령어로 대체해줍니다. 그러면 아래와 같은 모양이 될겁니다.

import my_turtle

t1 = my_turtle.Turtle_new()
t2 = my_turtle.Turtle_new()
t3 = my_turtle.Turtle_new()

t1.shape('turtle')
t1.color('red')
t1.fd(50)
t1.box(100,0,50,50,'red')

t2.shape('turtle')
t2.color('blue')
t2.left(90)
t2.fd(70)
t2.box(0,100,50,50,'blue')

t3.shape('turtle')
t3.color('green')
t3.box(-50,0,80,50,'green')

turtle.exitonclick()

 

모듈 이름이 좀 길어서 귀찮으면 아래처럼

import my_turtle as t

별명을 붙여주면 객체를 생성하는 명령이 아래처럼 간단해집니다.

t1 = t.Turtle_new()
t2 = t.Turtle_new()
t3 = t.Turtle_new()

 

 문제점

실행을 해보면, 한가지 문제가 있습니다. 맨 마지막에, 클릭시 창을 닫는 명령어가 기본 turtle 모듈을 사용하고 있는데, 현재 파일에서는 기본 turtle 모듈을 불러오지 않았고, my_turtle 만 import 를 해줬죠. 그래서 현재는 오류가 나는데, 이건 좀더 알아보고 있는 중입니다만, 현재까지는 두가지 해결방법이 있습니다.

1. 현재 파일에 turtle 모듈을 import 를 해준다.

import turtle
import my_module

2. 새로 만든 my_turtle 모듈의 모든 내용을  import 한다

import my_module
from my_turtle import *

해결은 됐지만, 올바른 사용법인지는 좀더 알아봐야겠네요.

댓글

댓글 본문