파이썬 딥러닝 ai 스쿨 기초/lecture06

lecture06 0교시 파이썬 기초 연습문제

junny1997 2021. 3. 26. 13:46

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