콘텐츠로 이동

6단원 쪽지시험: Python 클래스 (Class)

이름: ____________

출력 예측: 소스 코드를 보고 실행 결과를 예측하여 작성하세요.


문제 1. self.값 += n 의 함정 (출력 예측)

소스 코드

class Score:
    total = 0

    def add(self, n):
        self.total += n

s1 = Score()
s2 = Score()
s1.add(5)
s1.add(3)
s2.add(10)
print(Score.total)
print(s1.total)
print(s2.total)
print(s1.total + s2.total)

실행 결과 (순서대로 예측하여 작성하세요)

①

②

③

④

문제 2. 공유 가변 클래스 변수 (출력 예측)

소스 코드

class Basket:
    items = []

    def add(self, item):
        self.items.append(item)

    def count(self):
        return len(self.items)

a = Basket()
b = Basket()
a.add("apple")
a.add("banana")
b.add("cherry")
print(a.count())
print(b.count())
print(a.items is b.items)

실행 결과 (순서대로 예측하여 작성하세요)

①

②

③

문제 3. 이름 맹글링 + 상속 (출력 예측)

소스 코드

class Animal:
    def __init__(self, name):
        self.__name = name

    def get_name(self):
        return self.__name

class Dog(Animal):
    def __init__(self, name, breed):
        super().__init__(name)
        self.breed = breed

    def info(self):
        return f"{self.get_name()} ({self.breed})"

d = Dog("바둑이", "진돗개")
print(d.info())
print(d.get_name())
print(hasattr(d, "_Animal__name"))
print(hasattr(d, "__name"))

실행 결과 (순서대로 예측하여 작성하세요)

①

②

③

④

문제 4. str + 상속 오버라이딩 (출력 예측)

소스 코드

class Shape:
    def __init__(self, color):
        self.color = color

    def __str__(self):
        return f"Shape({self.color})"

    def area(self):
        return 0

class Circle(Shape):
    def __init__(self, color, r):
        super().__init__(color)
        self.r = r

    def __str__(self):
        return f"Circle({self.color}, r={self.r})"

    def area(self):
        return 3 * self.r * self.r

s = Shape("red")
c = Circle("blue", 4)
print(s)
print(c)
print(c.area())
print(isinstance(c, Shape))
print(type(c) == Shape)

실행 결과 (순서대로 예측하여 작성하세요)

①

②

③

④

⑤

문제 5. 클래스 변수 카운터 + classmethod (출력 예측)

소스 코드

class Robot:
    count = 0

    def __init__(self, name):
        self.name = name
        Robot.count += 1

    @classmethod
    def how_many(cls):
        return cls.count

    def __str__(self):
        return f"Robot:{self.name}"

r1 = Robot("R2D2")
r2 = Robot("C3PO")
print(Robot.how_many())
r3 = Robot("BB8")
print(Robot.how_many())
print(r1)
print(r1.count)
print(Robot.count)

실행 결과 (순서대로 예측하여 작성하세요)

①

②

③

④

⑤