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)
실행 결과 (순서대로 예측하여 작성하세요)
①
②
③
④
⑤