-
예제 1) 추상 클래스를 이용한 상속 연습문제
선생님의 코드
from abc import * class Employee(metaclass = ABCMeta): def __init__(self, irum, nai): self.irum = irum self.nai = nai @abstractmethod def pay(self): pass @abstractmethod def data_print(self): pass def irumnai_print(self): print('이름 : ' + self.irum + ', 나이 : ' + str(self.nai), end=' ') class Temporary(Employee): def __init__(self, irum, nai, ilsu, ildang): Employee.__init__(self, irum, nai) self.ilsu = ilsu; self.ildang = ildang; def pay(self): return self.ilsu * self.ildang def data_print(self): self.irumnai_print(); print(', 월급 : ' + str(self.pay())) class Regular(Employee): def __init__(self, irum, nai, salary): super().__init__(irum, nai) self.salary = salary def pay(self): return self.salary def data_print(self): self.irumnai_print(); print(', 급여 : ' + str(self.pay())) class Salesman(Regular): def __init__(self, irum, nai, salary, sales, commission): super().__init__(irum, nai, salary) self.sales = sales; self.commission = commission def pay(self): return super().pay() + (self.sales * self.commission) def data_print(self): self.irumnai_print(); print(', 수령액 : ' + str(round(self.pay()))) t = Temporary('홍길동', 25, 20, 150000); r = Regular('한국인', 27, 3500000) s = Salesman('손오공', 29, 1200000, 5000000, 0.25) t.data_print(); r.data_print(); s.data_print() <console> 이름 : 홍길동 , 나이 : 25 월급 : 300000 이름 : 한국인 , 나이 : 27 월급 : 3500000 이름 : 손오공 , 나이 : 29 수령액 : 2450000
작성자의 코드
from abc import * class Employee(metaclass = ABCMeta): irum = '이름' nai = '나이' @abstractmethod def pay(self): # 추상 메소드가 됨 pass @abstractmethod def data_print(self): # 추상 메소드가 됨 pass def irumnai_print(self): print('일반 메소드') class Temporary(Employee): ilsu = '일수' ildang = '일당' mon = 0 def __init__(self, irum, nai, ilsu, ildang): self.irum = irum self.nai = nai self.ilsu = ilsu self.ildang = ildang def pay(self): self.mon = self.ilsu * self.ildang def data_print(self): self.pay() print('이름 :',self.irum, ', 나이 :',self.nai, '월급 :', self.mon) t = Temporary('홍길동', 25, 20, 15000) t.data_print() class Regular(Employee): salary = '급여' def __init__(self, irum, nai, salary): self.irum = irum self.nai = nai self.salary = salary def pay(self): self.salary = self.ilsu * self.ildang def data_print(self): print('이름 :',self.irum, ', 나이 :',self.nai, '월급 :', self.salary) r = Regular('한국인', 27, 3500000) r.data_print() class Salesman(Employee): sales = '실적' commission = '수수료율(예: 0.25)' da = '수령액' def __init__(self, irum, nai, salary, sales, commission): self.irum = irum self.nai = nai self.salary = salary self.sales = sales self.commission = commission def pay(self): self.da = self.salary + self.sales * self.commission def data_print(self): self.pay() print('이름 :',self.irum, ', 나이 :',self.nai, '수령액 :', int(self.da)) s = Salesman('손오공', 29, 1200000, 5000000, 0.25) s.data_print() <console> 이름 : 홍길동 , 나이 : 25 월급 : 300000 이름 : 한국인 , 나이 : 27 월급 : 3500000 이름 : 손오공 , 나이 : 29 수령액 : 2450000
'Python' 카테고리의 다른 글
Python 문법 기초 31 - file i/o (try ~ except) + pickle(import) (0) 2022.10.22 Python 문법 기초 30 - 예외처리(try ~ except) (0) 2022.10.22 Python 문법 기초 29 - 추상 클래스(추상 메소드) (0) 2022.10.22 class 상속문제 예제 (0) 2022.10.22 Python 문법 기초 28 - class 다중 상속 (0) 2022.10.22