TWIG::2020.07.06

Today lolol·2020년 7월 6일
0

TWIG

목록 보기
1/17
post-thumbnail

twig

today what i've get

문서로 정리하는 것

문서로 생각을 정리하는 것은 중요하다.
머리 속이 아닌 글로 남기는 습관을 만들어야겠다.

- python abc

abstract base class
https://docs.python.org/ko/3/library/abc.html

python은 언어 차원에서 추상클래스를 제공하지 않는다.
라이브러리를 사용해야하는데, 대략적인 틀은 다음과 같다.

from abc import ABC

class MyABC(ABC):
    pass

추상 메소드를 작성하려면 아래와 같은 방법을 사용하면 된다.

class C(ABC):
    @abstractmethod
    def my_abstract_method(self, ...):
        ...

이 방법은 나쁘지 않은 방법이라고 생각한다.
(가시도가 높기 때문에, @notation으로 언급되어 있기 때문에 코드를 보았을 때 알아보기가 더 쉬울 것 이다.)

다른 방법도 있다.
https://stackoverflow.com/questions/4382945/abstract-methods-in-python

def my_abstract_method(self, ...):
	raise NotImplementedError

상속받은 메소드를 구현하지 않았다면, raise 될 것 이다.

- python setter and getter

https://stackoverflow.com/questions/36931415/using-properties-in-python-classes-cause-maximum-recursion-depth-exceeded

python은 언어 차원에서 setter, getter를 지원한다.

class Test(object):
    def __init__(self, value):
        self._x =  value

    @property
    def x(self):
        return self._x
    @_x.setter
    def x(self, x)
    	self._x = x

코드를 살펴보면 local var를 '_'를 이용해서 작성했음을 알 수 있는데
이는 recursion을 방지하기 위함이다.

반환하는 변수명과 클래스 멤버변수의 이름이 같다면, 반환하는 값이 메소드가 되기 때문에 반환하는 값은 멤버변수와 다른 이름을 사용해야 한다.

- modulation

python에서 모듈화를 한다는 것은 각각의 스크립트를 호출하는 과정인 것으로 보인다.
스크립트들은 엔트리 포인트가 존재하고, main.py가 그러한 예시가 될 것 이다.

이 경우 from의 시점은 main을 중심으로 보면 된다.
다른 파일도 상대적인 경로를 자신이 아닌 main을 기점으로 보면 된다.
(각 파일의 경로가 아닌 main.py의 경로만 생각하는 것 이다.)

그 외에도 이러한 방법이 있다고 하니, 추후 적용해보자.
https://stackoverflow.com/questions/714063/importing-modules-from-parent-folder

그 외에도...

https://stackoverflow.com/questions/28705029/pycharm-error-no-module-when-trying-to-import-own-module-python-script

pycharm에서 커스텀 모듈을 인지하지 못한다면, src 디렉토리를 Mark Directory As -> Sources Root 지정하도록 하자.
개발도구에서 인지하기 시작한다.

profile
working making doing makes us 🤖

0개의 댓글