__init__메서드에 관한 질문

조회수 298회
#1 첫번째 방법
class Triangle(object):
    def area(self, b, h):
        self.b = b
        self.h = h
        return b*h/2
a = Triangle()

a.area(4,8)

위의 코드를 init메서드를 이용하여 새로 적어보고자 시도하였습니다.

#2 두번째 방법 시도
class Triangle(object):

    def __init__(self, value_v, value_h):
        b = value_h
        h = value_v

    def area(self,b,h):
        return b*h / 2

a=Triangle()
a.area(4,8)

하지만 다음과 같은 오류 내용을 받았습니다.

 8     def area(self,b,h):
      9         return b*h / 2
---> 10 a=Triangle()
     11 a.area(4,8)

TypeError: __init__() missing 2 required positional arguments: 'value_v' and 'value_h'

.#2코드에서

a=Triangle( )

을 없애면 잘 돌아갑니다.

질문 1

.#1과 달리 .#2에선 Triangle( )을 없애면 잘 돌아가는 이유가 뭔지 궁금합니다.

질문2

class Triangle(object ):에서 class Triangle :로 괄호를 없애도 똑같이 돌아가던데 괄호를 넣는 이유가 뭔지 궁금합니다.

답변해주시면 감사하겠습니다

좋은 하루 보내세요!

1 답변

  • __init__메소드를 사용하시면, __init__메소드의 self 뒤의 매개변수에 맞춰 a=Triangle()시에 매개변수를 전달해 주어야 합니다.
    아래와 같이 사용하시는 것이 이상적입니다.

    class Triangle(object):
        def __init__(self, b, h):
            self.b = b
            self.h = h
    
        def area(self):
            return self.b * self.h / 2
    
    a = Triangle(4, 8)
    print(a.area())
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)