본문 바로가기
FastCampus/한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online.

한 번에 끝내는 파이썬 웹 개발 초격차 패키지 51일차

by Dream_World 2021. 10. 26.

파이썬 심화 문법

오늘은 정보보안 컨설팅 2차 면접을 보고 집에 왔다. 아직도 최종 임원 면접을 볼 수 있을지는 미지수다. 2차 면접 합격을 해야만 주어지는 임원 면접 기회 꼭 붙고 싶다! 컨설팅으로써 필요한 덕목은 소통, 기술력, 순발력이라고 한다. 실장님께서 말씀하시길 컨설팅 업무는 내가 선생님이 되어서 고객에게 설명하는 부분이라고 말씀하셨으며 취약점 진단을 하기 위한 기술력이 좋아야 하고 인사 담당자님께서 말씀하시길 고객의 어떠한 상황에도 대응 할 수 있어야 하는 순발력이 필요하다고 말씀하셨다. 난 어떤 업무가 할당되어도 완수할 것이다. 내가 더는 물러날 곳도 없고 반드시 해내고 마는 나의 성격을 그대로 드러내며 내 노력의 결과를 보여줄 것이다. 끊임없이 공부하고 성장하며 소통 관련된 서적도 많이 읽어볼 예정이다. 블로그를 쓰면서 늘 내 생각을 담기에는 아직 많이 부족함을 느낀다. 매 순간 무엇을 기록하고 그날 무엇을 위해 나아갈지 정하고 실천하고 있다. 비록 노트에 일정을 적는 것은 나와 맞지 않는다는 것을 나는 알기에 매 순간 내가 계획한 것은 최선을 다해 완수하고자 하기에 내 모습이 변치 않기를 원한다.

 


클래스

상속

상속의 개념

- 클래스들의 공통된 메서드를 뽑아내서 부모 클래스를 만든다.

- 이것을 자식 클래스에서 상속받아서 사용한다.

 

상속의 장점

- 코드의 중복을 제거할 수 있다.

- 유지보수가 편리해 진다.

 

상속 구현하기

class Item: # 부모 클래스
    '''
    속성 : 이름
    메서드 : 줍기, 버리기
    '''
    def __init__(self, name):
        self.name = name

    def pick(self):
        print(f"[{self.name}]을(를) 주웠습니다.")

    def discard(self):
        print(f"[{self.name}]을(를) 버렸습니다.")

class Weapon(Item): # 자식 클래스
    '''
    속성 : 공격력
    메서드 : 공격하기
    '''
    def __init__(self, name, demage):
        super().__init__(name) # 부모 클래스 상속
        self.demage = demage

    def attack(self):
        print(f"[{self.name}]을(를) 이용하여 {self.demage}로 공격합니다.")

class HealingItem(Item): # 자식 클래스
    '''
    속성 : 회복량
    메서드 : 사용하기
    '''
    def __init__(self, name, recovery_amout):
        super().__init__(name) # 부모 클래스 상속
        self.recovery_amout = recovery_amout

    def use(self):
        print(f"[{self.name}]을(를) 사용합니다. {self.recovery_amout} 회복")

m16 = Weapon("m16", 110)
bandage = HealingItem("붕대", 20)

m16.attack()
bandage.use()

>>> [m16]을(를) 이용하여 110로 공격합니다.
>>> [붕대]을(를) 사용합니다. 20 회복

 

추상 클래스

from abc import *
 
class 추상클래스이름(metaclass=ABCMeta):
    @abstractmethod
    def 메서드이름(self):
        코드

- 메서드의 목록만 가진 클래스이며 상속받는 클래스에서 메서드 구현을 강제하기 위해 사용

from abc import * # abc 모듈 사용

# metaclass 키워드를 전달하고 ABCMeta를 직접 사용해서 추상 베이스 클래스를 정의
class Item(metaclass=ABCMeta): 
    '''
    속성 : 이름
    메서드 : 줍기, 버리기
    '''
    def __init__(self, name):
        self.name = name

    def pick(self):
        print(f"[{self.name}]을(를) 주웠습니다.")

    def discard(self):
        print(f"[{self.name}]을(를) 버렸습니다.")

    # 프로퍼티와 디스크립터에 대한 추상 메서드를 선언하는 데 사용
    @abstractmethod # 추상 메서드를 나타내는 데코레이터
    def use(self):
        pass

class Weapon(Item):
    '''
    속성 : 공격력
    메서드 : 공격하기
    '''
    def __init__(self, name, demage):
        super().__init__(name)
        self.demage = demage

    def use(self):
        print(f"[{self.name}]을(를) 이용하여 {self.demage}로 공격합니다.")

class HealingItem(Item):
    '''
    속성 : 회복량
    메서드 : 사용하기
    '''
    def __init__(self, name, recovery_amout):
        super().__init__(name)
        self.recovery_amout = recovery_amout

    def use(self):
        print(f"[{self.name}]을(를) 사용합니다. {self.recovery_amout} 회복")

m16 = Weapon("m16", 110)
bandage = HealingItem("붕대", 20)

m16.use()
bandage.use()

>>> [m16]을(를) 이용하여 110로 공격합니다.
>>> [붕대]을(를) 사용합니다. 20 회복

 

오늘은 상속에 대해서 학습하는 시간을 가져보았다. Javascript와 비슷하게 super로 상속받아오지만 생성자 부분만 조금 다르다는 점이다. 부모 클래스에서 자식 클래스로 상속받아서 사용하게 되면 코드가 가독성이 좋은 장점이 있다. 자식 클래스를 사용하기 위해서는 추상 클래스가 같이 사용되는 것이 마냥 좋을지는 의문이다. 메서든 구현을 강제하기 위함이어서 한편으로 보기에는 코드 구현하기에는 좋을지 모르지만 나중에 되면 헷갈리지 않을까 의문이 남는다. 개발 공부는 끊임없이 해야 하며 알 때까지 반복만이 살길임을 알 수 있다. 아직도 익숙하지 않지만 어느 정도 코드가 눈에 들어온다는 건 확실하다. 앞으로는 시큐어 코딩을 진행해야 하는데 Python 외에도 다른 언어도 같이 공부해야 하는 시간을 다가올 것이다. 공부를 통해 나의 지식 레벨업을 알린다.
51일 차는 여기서 마무리하고자 합니다.



패스트캠퍼스 링크 : https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

댓글