class 상속
# parent class, super class
class Person:
def __init__(self):
self.num_arm = 2
print("Person_init")
def greeting(self):
print('안녕하세요.')
class University:
def credit_show(self):
print("A")
# 상속(다른 클래스의 기능 물려받음)
# child class, sub class
class Student(Person, University):
# 다중 상속
def __init__(self, semester):
super().__init__()
# 부모 클래스의 init을 사용하려면 불러와야줘야 함
self.semester = semester
def study(self):
print('공부하기')
def greeting(self):
super().greeting()
# 부모 클래스의 greeting 실행
print(f'석사과정 {self.semester}학기생입니다.')
class Student_sub(Person):
# 자식 클래스에 init이 없을경우 super().__init__() 생략가능
pass
from person import Student
from person import Student_sub
kim = Student(3)
# 상속된 메소드 실행
kim.greeting()
kim.study()
kim.credit_show()
# 부모 init 안의 변수 가져옴
print(kim.num_arm)
print(kim.semester)
park = Student_sub()
print(park.num_arm)
Person_init
안녕하세요.
석사과정 3학기생입니다.
공부하기
A
2
3
Person_init
2
추상 class
from abc import *
# 추상 클래스
# 이 클래스를 상속 함으로 기본 구조 결정됨
class StudentBase(metaclass=ABCMeta):
@abstractmethod
def study(self):
pass
@abstractmethod
def go_to_school(self):
pass
class Student(StudentBase):
def study(self):
print('공부하기')
def go_to_school(self):
print('학교가기')
from person_2 import Student
kim = Student()
kim.go_to_school()
kim.study()
학교가기
공부하기
연습문제
4과 발전
Calculator 클래스를 상속 받는 ScienCalculator를 만드세요.
제곱을 계산하는 def pow(self) 함수를 추가하세요.
메소드 오버라이딩을 이용해 div함수가 분모가 0일 때 0을 return하도록 재정의 하세요.
Calculator_test.py에서 ScienCalculator 객체 생성 후 5가지 메소드 사용 결과 출력
class Calculator:
def __init__(self, num1, num2):
self.num1 = num1
self.num2 = num2
def add(self):
result = self.num1 + self.num2
return result
def sub(self):
result = self.num1 - self.num2
return result
def mul(self):
result = self.num1 * self.num2
return result
def div(self):
result = self.num1 / self.num2
return result
class ScienCalculator(Calculator):
def __init__(self, num1, num2):
super().__init__(num1, num2)
def pow(self):
result = self.num1 ** self.num2
return result
def div(self):
if self.num2 == 0:
return 0
else:
return super().div()
from fourcal import ScienCalculator
calculate = ScienCalculator(30,5)
print(calculate.add())
print(calculate.sub())
print(calculate.mul())
print(calculate.div())
print(calculate.pow())
35
25
150
6.0
24300000