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

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

by Dream_World 2021. 10. 25.

파이썬 심화 문법

오늘도 참 파란만장한 하루를 보내고 말았다. 해킹 기법 기술을 무작위로 유튜브로 계속해서 시청하면서 눈으로 익히려고도 해봤으며 글로써도 머리에 주입해보려고 시도해 보았다. 좋은 강의도 찾곤 했지만 지금, 이 순간은 허무함만이 가득하다. 내일 있을 면접 가운데 전혀 머리에 남아있지 않는다는 것이다. 결국은 그러한 결론이 나왔다. 내가 직접 해보지 않았던 것은 기억으로 남기가 어렵다는 것. 내가 직접 기술했던 부분은 과정까지도 설명이 가능하다는 것이다. 내가 개발 공부하면서도 익숙하지 않다는 부분이 여기에서도 나오는 듯한 느낌이 든다. 솔직히 개발 공부보다 더 많이 한 분야가 정보보안 분야이며 2년 공부했다가 2년을 다른 공부를 하는 바람에 내 머릿속에서 남는 부분이 없다는 것. 왜 계속해서 자기 계발 하지 않으면 도태되는지 다시 한번 느끼게 된다. 아무리 좋은 기회가 왔을지라도 준비되지 않으면 계속해서 떨림과 걱정만 쌓여 간다는 것이다. 최근에 그러한 말을 들었다. 아무리 계획이 많고 기회가 오더라도 내 뜻대로 되지 않다는 것이다. 그 당시 안 되는 일이 있으면 훌훌 털어 넘기고 다음을 기약해야 하는데 난 여태껏 그렇게 하지 못하고 부들대고 있었기에 나 자신을 너무 고통에만 머물게 했던 것 같다. 조금 더 분발해야지 나를 더 사랑해야지 하면서 공부에 맛을 느껴보길 원한다.

 


클래스

여러가지 메서드

인스턴스 메서드

- 인스턴스 속성에 접근할 수 있는 메서드

- 항상 첫번째 파라미터로 self를 갖는다.

Hit 메서드 구현하기
데미지를 받으면 체력과 방어막이 깍이는 hit 메서드를 구현해 보자.

1. 데미지가 방어막보다 작거나 같으면 방어막만 깍인다.
2. 데미지가 방어막보다 크고 체력보다 작으면 체력과 방어막이 깍인다.
3. 데미지가 체력보다 크면 체력을 0으로 만든다.
class Unit:
    ...
    # 인스턴스 메서드 (instance method)
    # 인스턴스 속성에 접근할 수 있는 메서드
    def hit(self, demage):
        # 방어막 변경
        if self.shield >= demage:
            self.shield -= demage
            demage = 0
        else:
            demage -= self.shield
            self.shield = 0
        
        # 체력 변경
        if demage > 0:
            if self.hp > demage:
                self.hp -= demage
            else:
                self.hp = 0
                
     ...
                
probe.hit(16)
print(probe)
probe.hit(16)
print(probe)
probe.hit(16)
print(probe)

>>> [프로브] 체력 : 20 실드 : 4 공격력 : 5
>>> [프로브] 체력 : 8 실드 : 0 공격력 : 5
>>> [프로브] 체력 : 0 실드 : 0 공격력 : 5

 

클래스 메서드

- 클래스 속성에 접근하기 위해서 사용한다.

- 클래스를 의미하는 cls를 파라미터로 받는다.

class Unit:
    count = 0
    ...
    # 클래스 메서드 (class method)
    # 클래스 속성에 접근하는 메서드
    @classmethod
    def print_count(cls):
        print(f"생성된 유닛 개수 : [{cls.count}]개")
        
    ...
    
Unit.print_count()

>>> 생성된 유닛 개수 : [3]개

 

정적 메서드

- 인스턴스를 만들 필요가 없는 메서드

- self를 받지 않는다

- 메서드가 인스턴스 유무와 관계없이 독립적으로 사용될 때

class Math:

    # 정적 메서드(static method)
    # 인스턴스를 만들 필요가 없는 메서드
    @staticmethod
    def add(x, y):
        return x + y

    @staticmethod
    def sub(x, y):
        return x - y

print(Math.add(3, 4))
print(Math.sub(3, 4))

>>> 7
>>> -1

 

매직 메서드

- 클래스안에 정의할 수 있는 스페셜 메서드

- 특별한 상황에 호출된다.

- __이름__의 형태로 되어있다.

class Unit:

	...
    
    def __init__(self, name, hp, shield, demage):
    def __str__(self):
    
print(dir(probe))

>>> ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'count', 'demage', 'hit', 'hp', 'name', 'print_count', 'shield']

 

오늘은 여러 가지 메소드에 대해서 학습하는 시간을 가져보았다. 요즘 따라 학습 의지가 종종 끊기려고 할 때가 많아진다. 다른 공부에 지쳐 블로그도 정보보안은 작성하면 개발자는 뒷전이 되어버리는 경향이 될 것 같은 느낌이다. 솔직히 정보보안 하면 웹 언어, 시스템 언어 정도는 다룰 줄 알아야 한다. 웹 언어 (Javascript, PHP, java), 시스템 언어 (C, C++)이 두 언어를 통해 내가 배워야 할 부분이 더 광범위하다는 것을 알 수 있다. 오늘 메서든 학습하면서 느끼는 바는 기존에 웹 구축할 때 저 메소드에 대한 의미를 전혀 몰랐었는데 지금에서야 알 듯한 느낌이 든다. 너무 졸리기도 하고 내가 학습하고 있는 방향이 맞는지도 알진 못하지만 부딪히는 내 모습이 여전히 남아 있다는 것이다.

50일 차는 여기서 마무리하고자 합니다.


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

 

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

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

fastcampus.co.kr

댓글