Coding Test/초보자를 위한 파이썬 300제

[독학 파이썬] 초보자를 위한 파이썬 300제 풀이(281~290)_12.23

이대코 2022. 12. 23. 17:39

안녕하세요. Harry입니다.

 

현재 풀이중인 초보자를 위한 파이썬 300제 풀이를 진행하면서 나름대로 파악했던 문제 출제 의도와 풀이를 작성했습니다.

모든 풀이는 직접 Pycharm을 통해 에러없이 출력됨을 확인 후 작성했습니다.

 

초보자를 위한 파이썬 300제 풀이는 Wikidocs에 무료로 배포된 전자책을 활용했습니다/

https://wikidocs.net/book/922

[학습목표]

1. 각 문제별 요구하는 역량(출제의도)이 무엇인지 파악할 수 있다.

2. 각 문제별 요구하는 기술 및 기능을 활용하여 문제를 해결할 수 있다.

 

 

281 ~ 290

281 클래스 정의

다음 코드가 동작하도록 차 클래스를 정의하세요.

- 요구역량 : 클래스를 생성할 수 있는가?

>> car = 차(2, 1000)
>> car.바퀴
2
>> car.가격
1000
정답확인
class 차:
    def __init__(self,바퀴,가격):
        self.바퀴 = 바퀴
        self.가격 = 가격

car = 차(2,1000)
print(car.바퀴)
print(car.가격)

282 클래스 상속

차 클래스를 상속받은 자전차 클래스를 정의하세요.

- 요구역량 : 타 클래스를 상속할 수 있는가?

다른 클래스를 상속하려면, 클래스 생성 시 괄호안에 상속할 클래스 명을 작성해주어야 합니다.

class 자식클래스명(부모클래스명):

자식클래스는 부모클래스의 메서드를 활용할 있습니다.

 

정답확인
class 차:
    def __init__(self,바퀴,가격):
        self.바퀴 = 바퀴
        self.가격 = 가격

class 자전차(차):
    pass

283 클래스 상속

다음 코드가 동작하도록 자전차 클래스를 정의하세요. 단 자전차 클래스는 차 클래스를 상속받습니다.

- 요구역량 : 부모클래스의 기능을 활용하여 자식 클래스 인스턴스를 지정하여 출력할 수 있는가?

>> bicycle = 자전차(2, 100)
>> bicycle.가격
100
정답확인
class 차:
    def __init__(self,바퀴,가격):
        self.바퀴 = 바퀴
        self.가격 = 가격

class 자전차(차):
    def __init__(self,바퀴,가격):
        self.바퀴 = 바퀴
        self.가격 = 가격

284 클래스 상속

다음 코드가 동작하도록 자전차 클래스를 정의하세요. 단 자전차 클래스는 차 클래스를 상속받습니다.

- 요구역량 : 특정 매개변수를 자식 클래스에 추가할 수 있는가?

class 자식클래스(부모클래스):

super().__init__(부모클래스에서 가져올 매개변수 ) 활용하면 굳이 같은 기능을 중복하여 쓰지 않고, 부모 클래스의 매개변수를 자식 클래스에서 그대로 활용할 있습니다.

이는 불필요한 코드의 중복을 줄여줍니다.

>> bicycle = 자전차(2, 100, "시마노")
>> bicycle.구동계
시마노
정답확인
class 차:
    def __init__(self,바퀴,가격):
        self.바퀴 = 바퀴
        self.가격 = 가격

class 자전차(차):
    def __init__(self,바퀴,가격,구동계):
        self.바퀴 = 바퀴
        self.가격 = 가격
        self.구동계 = 구동계
        
#답지(super()활용)
class 차:
    def __init__(self, 바퀴, 가격):
        self.바퀴 = 바퀴
        self.가격 = 가격


class 자전차(차):
    def __init__(self, 바퀴, 가격, 구동계):
        super().__init__(바퀴, 가격)
        #차.__init__(self, 바퀴, 가격)
        self.구동계 = 구동계

285 클래스 상속

다음 코드가 동작하도록 차 클래스를 상속받는 자동차 클래스를 정의하세요.

- 클래스 내 새로운 메서드를 정의할 수 있는가?

>> car = 자동차(4, 1000)
>> car.정보()
바퀴수 4
가격 1000
정답확인
class 차:
    def __init__(self, 바퀴, 가격):
        self.바퀴 = 바퀴
        self.가격 = 가격


class 자동차(차):
    def __init__(self, 바퀴, 가격):
        super().__init__(바퀴, 가격)

    def 정보(self):
        print("바퀴수 ", self.바퀴)
        print("가격 ", self.가격)

286 부모 클래스 생성자 호출

다음 코드가 동작하도록  클래스를 수정하세요.

- 요구역량 : 부모클래스를 수정하여 자식클래스를 출력할 때 영향을 줄 수 있는가?

>> bicycle = 자전차(2, 100, "시마노")
>> bicycle.정보()
바퀴수 2
가격 100
정답확인
class 차:
    def __init__(self, 바퀴, 가격):
        self.바퀴 = 바퀴
        self.가격 = 가격

    def 정보(self):
        print("바퀴수 ", self.바퀴)
        print("가격 ", self.가격)

class 자동차(차):
    def __init__(self, 바퀴, 가격):
        super().__init__(바퀴, 가격)

class 자전차(차):
    def __init__(self, 바퀴, 가격, 구동계):
        super().__init__(바퀴, 가격)
        self.구동계 = 구동계

287 부모 클래스 메서드 호출

자전차의 정보() 메서드로 구동계 정보까지 출력하도록 수정해보세요.

- 자식클래스를 수정하여 출력문구를 추가할 수 있는가?

>> bicycle = 자전차(2, 100, "시마노")
>> bicycle.정보()
바퀴수 2
가격 100
구동계 시마노
정답확인
class 차:
    def __init__(self, 바퀴, 가격):
        self.바퀴 = 바퀴
        self.가격 = 가격

    def 정보(self):
        print("바퀴수 ", self.바퀴)
        print("가격 ", self.가격)
        

class 자동차(차):
    def __init__(self, 바퀴, 가격):
        super().__init__(바퀴, 가격)

class 자전차(차):
    def __init__(self, 바퀴, 가격, 구동계):
        super().__init__(바퀴, 가격)
        self.구동계 = 구동계
    def 정보(self):
        super().정보()
        print("구동계 ", self.구동계)

288 메서드 오버라이딩

다음 코드의 실행 결과를 예상해보세요.

- 요구역량 : 클래스가 상속관계일 때 실행결과를 알고 있는가?

class 부모:
  def 호출(self):
    print("부모호출")

class 자식(부모):
  def 호출(self):
    print("자식호출")
나 = 자식()
나.호출()
정답확인
- 자식호출

289 생성자

다음 코드의 실행 결과를 예상해보세요.

- 요구역량 : 클래스가 상속관계일 때 실행결과를 알고 있는가?

class 부모:
  def __init__(self):
    print("부모생성")

class 자식(부모):
  def __init__(self):
    print("자식생성")
나 = 자식()
정답확인
- 자식생성

290 부모클래스 생성자 호출

다음 코드의 실행 결과를 예상해보세요.

- 요구역량 : 자식클래스가 부모클래스를 상속하고 super.__init__를 인용했을 때 인스턴스 실행 결과를 알고 있는가?

suer로 인용한 경우, 아래의 코드에서는 자식클래스 실행 -> 부모클래스 실행까지 된다.

class 부모:
  def __init__(self):
    print("부모생성")

class 자식(부모):
  def __init__(self):
    print("자식생성")
    super().__init__()

나 = 자식()
정답확인
- 자식생성
- 부모생성
 
감사합니다.