인프런 커뮤니티 질문&답변

신인철님의 프로필 이미지
신인철

작성한 질문수

파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)

최대한 쉽게 이해하기 - 객체와 클래스2

객체지향 출력 순서

작성

·

210

0

제가 생각했을때는 print(argument1, argument2) 그 다음에 self.name이면1 2blue 사각형2 3yellow 사각형 순서로 출력이 되어야 할 것 같은데, 예상 밖이네요..혹시 이렇게 순서가 되는 이유가 있나요?

답변 2

0

좋은 질문이네요! 저도 같이 생각해봤는데,

만약 코드가
print(quad1.qurd_name(quad1.width,quad1.height))

print(quad2.qurd_name(quad2.width,quad2.height))

이렇게 각각의 함수를 따로 출력하는 코드였다면 말씀하신 순서대로 출력이 될거에요.

하지만, print(quad1.qurd_name(quad1.width,quad1.height),quad2.qurd_name(quad2.width,quad2.height)) 이 코드에선 print문 안에 두 메서드가 동시에 호출이 돼요. 아마 출력 속도는 (아주 미세한 차이겠지만) 더 빠를 것입니다. 한번에 두 메서드가 동시에 돌아가니까요!

0

안녕하세요. 답변도우미입니다.

사실 보여주신 이미지만으로는 각 함수가 어떤 코드로 실제로 구현되어 있는지를 알기는 어려워서요. 관련 출력은 전적으로 각 클래스가 어떤 코드로 구성되어 있는지에 따라 다릅니다. 즉, 이런 출력 순서는 일반적으로 함수들이 어떤 방식으로 결과를 반환하는지에 따라 결정됩니다. 예를 들어, 만약 gurd_name 함수가 print를 내부적으로 호출하고 있다면, 함수가 반환되기 전에 print가 실행될 것이고, 그 결과가 먼저 출력될 수 있습니다. 또 해당 함수에서 또다른 내부 함수를 호출할 수도 있고, 그렇다면 해당 내부 함수의 출력에 의해서도 위와 같이 출력될 수 있습니다. 따라서, 선언하신 클래스의 코드와 함께 순차적으로 어떤 코드가 실행되는지를 확인하시면, 관련 출력을 이해하시는데 도움이 되실 것 같습니다.

감사합니다.

신인철님의 프로필 이미지
신인철

작성한 질문수

질문하기