직원 급여 클래스
일반 직원의 급여 계산을 상속받아 관리자의 급여 계산을 오버라이딩하시오.
미리 작성된 코드
다음 부모 클래스는 제출 코드 앞에 자동으로 추가된다. 부모 클래스는 제출하거나 다시 작성하지 않는다.
class Employee:
def __init__(self, base_salary):
self.base_salary = base_salary
def get_base_salary(self):
return self.base_salary
def get_pay(self):
return self.base_salary
작성할 클래스
다음 자식 클래스만 작성한다.
class Manager(Employee):
def get_pay(self):
# 코드를 작성하세요.
Employee는 기본급base_salary를 저장한다.get_base_salary()는 기본급을int로 반환한다.Employee.get_pay()는 기본급을 반환한다.Manager.get_pay()는super().get_pay()로 부모가 계산한 급여를 구하고 관리 수당 \(500,000\)을 더해 반환한다.Manager는 부모의 생성자와get_base_salary()를 그대로 상속한다.
클래스를 사용하는 코드
작성한 클래스들은 아래 코드와 함께 실행된다.
n = int(input())
employees = []
for _ in range(n):
employee_type, base_salary = input().split()
base_salary = int(base_salary)
if employee_type == "Employee":
employees.append(Employee(base_salary))
else:
employees.append(Manager(base_salary))
q = int(input())
for _ in range(q):
command = input().split()
employee = employees[int(command[1]) - 1]
if command[0] == "base":
result = employee.get_base_salary()
else:
result = employee.get_pay()
print(result)
print(type(result))
위 코드가 정상적으로 동작하도록 작성할 자식 클래스의 정의 전체만 제출한다. 미리 작성된 부모 클래스, 입력을 받는 코드, 객체를 생성하는 코드는 제출하지 않는다.
상태만 변경하는 메서드의 반환값은 출력하지 않는다. 값을 조회하거나 계산 결과를 반환하는 메서드는 반환값과 자료형을 출력한다.
입력
첫째 줄에 객체 수 \(N\)이 주어진다. 다음 \(N\)개의 줄에는 Employee 또는 Manager와 기본급 base_salary가 주어진다.
다음 줄에 명령 수 \(Q\)가 주어진다. 이어지는 줄에는 base i 또는 pay i가 주어진다.
- \(1 \le N,Q \le 1,000\)
- \(0 \le base_salary \le 1,000,000,000\)
- \(1 \le i \le N\)
출력
각 명령마다 반환값과 반환값의 자료형을 출력한다.
예제 입력 1
2
Employee 2000000
Manager 2000000
4
base 1
pay 1
base 2
pay 2
예제 출력 1
2000000
<class 'int'>
2000000
<class 'int'>
2000000
<class 'int'>
2500000
<class 'int'>
예제 설명 1
두 객체의 기본급은 모두 \(2,000,000\)이다. 일반 직원의 급여는 기본급과 같은 2000000이다. 관리자는 부모의 get_pay()가 반환한 \(2,000,000\)에 관리 수당 \(500,000\)을 더해 2500000을 반환한다.
예제 입력 2
1
Manager 0
1
pay 1
예제 출력 2
500000
<class 'int'>
코멘트