Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

Time

클래스에 대해서 좀 더 자세히 살펴보자. 테스트를 위해서 Time이라는 클래스를 만들었다.
class Time(object):
    """represents the time of day.
    attributes: hour, minute, second"""
이제 Time 클래스로 부터 새로운 객체를 만들어서 hour, minutes, seconds 어트리뷰트를 추가했다.
time = Time()
time.hour = 11
time.minutes = 59
time.second = 30

Pure functions

앞서 만든 Time 클래스는 어트리뷰트만 가지고 있는데, 시간을 더하고 빼는 함수를 만들 것이다. 처음에는 프로토타이핑 수준의 간단한 함수를 만들고, 이 프로그램을 개선해 나갈 것이다.

처음 만든 프로토타입 함수는 아래와 같다.
def add_time(t1, t2):
    sum = Time()
    sum.hour = t1.hour + t2.hour
    sum.minutes = t1.minutes + t2.minutes
    sum.second = t1.second + t2.second
    return sum
프로그램이 잘 작동하는지 테스트 해 보자.
time1 = Time()
time1.hour = 11
time1.minutes = 59
time1.second = 30

time2 = Time()
time2.hour = 1
time2.minutes = 12
time2.second = 15

def print_time(t):
    print('{}:{}:{}'.format(t.hour, t.minutes, t.second))

def add_time(t1, t2):
    sum = Time()
    sum.hour = t1.hour + t2.hour
    sum.minutes = t1.minutes + t2.minutes
    sum.second = t1.second + t2.second
    return sum

t = add_time(time1, time2)
print_time(t)
# 12:71:45
작동은 잘 하지만, 제대로 작동한 건 아니다. 12:71:45라는 시간은 없기 때문이다. 코드를 개선해보자.
def add_time(t1, t2):
    sum = Time()
    sum.hour = t1.hour + t2.hour
    sum.minutes = t1.minutes + t2.minutes
    sum.second = t1.second + t2.second

    if sum.second >= 60:
        sum.second -= 60
        sum.minutes += 1

    if sum.minutes >= 60:
        sum.minutes -= 60
        sum.hour += 1
    return sum