python 메소드 실습


이미지

특별한 메소드 실습 강의인데요

None가 왜 나오는건지 그리고 몸무게 수치는 walk -0.1 eat+0.1인데 뒤의 소숫점도 궁금합니다.

뒤의 소숫점은 이전의 강의에서 들었던거 같은데 기억이 잘 안나 한번더 질문하게 되었습니다...

  • 2016년 05월 20일에 작성됨
    잘 부탁드립니다

조회수 262


2 답변


"None"은 print하려고 한 function의 리턴값입니다. 만약에 해당 function에서 return 명령문을 사용하지 않으면 return None 이 function의 끝에 묵시적으로 추가된답니다.

그리고 68.7 - 0.1의 결과가 68.60000000000001로 출력되는 것은 binary floating-point의 기본적 특성이지요. Python의 버그도 아니고, 님의 코드의 버그도 아니지요. floating-point 연산을 지원하는 모든 언어에서는 똑같은 결과를 얻을 수 있을 것입니다^

  • 2016년 05월 20일에 작성됨


class Human():

    def __init__(self, name, weight):
        self.name = name
        self.weight = weight

    def __str__(self):
        return "{} (몸무게 {}kg)".format(self.name, self.weight)

    def eat(self):
        self.weight += 0.1
        print("{}가 먹어서 {}kg이 되었습니다.".format(self.name, self.weight))

    def walk(self):
        self.weight -= 0.1
        print("{}가 걸어서 {}kg이 되었습니다.".format(self.name, self.weight))

# 아래에서 person을 이름과 몸무게를 가지는 Human클래스의 인스턴스로 만들어보세요.
person = Human("하하", 68.7)
print(person)
print(person.walk())
print(person.eat())
print(person.walk())

return값이 문자열화 해주는 함수에 들어있는데 walk와 eat에도 return값을 줘야하나요? (문자열화 하는 str 이것도 잘 이해는 안가지만..)

  • 2016년 05월 21일에 작성됨
    잘 부탁드립니다

  • 이 경우는 person.walk(); person.walk(); person.eat() 처럼 써 주세요 메소드 안에서 print하니 굳이 뭔가 리턴하지 않아도 됩니다.    Demi   2016.5.23 11:13     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close