본문 바로가기

Language/Python15

[Python] refactoring - 02. 캡슐화, DI를 통한 리팩토링 목적 리팩토링할 코드를 가지고, 여러 번의 단계에 걸쳐 리팩토링을 진행한다. As-is에서 나온 개선해야할 부분을 To-be를 통해 개선한다. 리팩토링 전 문제점 파악 class Store(ABC): @abstractclassmethod def __init__(self): self.money = 0 self.name = "" self.products = {} @abstractclassmethod def set_money(self, money): pass @abstractclassmethod def set_products(self, products): pass @abstractclassmethod def get_money(self): pass @abstractclassmethod def get_produc.. 2022. 4. 20.
[Python] refactoring - 01. 추상화, 생성자주입을 통한 리팩토링 목적 리팩토링할 코드를 가지고, 여러 번의 단계에 걸쳐 리팩토링을 진행한다. As-is에서 나온 개선해야할 부분을 To-be를 통해 개선한다. 리팩토링 전 문제점 파악 As-is class EricStore: def __init__(self) -> None: self.money = 0 self.name = "에릭상점" self.products = { 1: {"name": "키보드", "price": 30000}, 2: {"name": "모니터", "price": 50000}, } def set_money(self, money): self.money = money def set_products(self, products): self.products = products def get_money(self): .. 2022. 4. 20.
[Python] Type Hint, Callable types Type Hint 파이썬에서 Type Hint는 다음과 같이 진행할 수 있다. 심플 타입일 경우 int_var: int = 88 str_var: str = "hello world" float_var: float = 88.9 bool_var: bool = True Type Hint라고 하는 이유는 아래 예제와 같다 int_var: str = 88 예를 들어, int_var 이라는 변수에 88이라는 값을 할당해주면 int형이지만 타입 힌트에서 str로 해줬을 경우 에러가 날 것 같지만, 에러가 나지 않는다. 말 그대로 힌트이기 때문에 타입 검사를 하지 않는다. 리스트일 경우 from typing import List, Tuple, Dict list_var: List[str] = ["1", "2", "3"] .. 2021. 12. 19.
[Python] 컴포지션(composition) 컴포지션(composition) 컴포지션은 다른 클래스의 일부 메서드를 사용하고 싶지만, 상속은 하고 싶지 않을 경우 사용합니다. 일반적으로 상속을 했을 때, 부모 클래스가 변하면 자식 클래스는 계속 수정되어야 한다. - 다른 클래스의 일부 메서드를 사용하고 싶지만, 상속은 하고 싶지 않을 경우 사용한다. - 상속 관계가 복잡할 경우, 코드에 대해 상세한 이해가 어려워 상속을 할 경우 위험성이 증가 - 상속 관계일 경우, 부모 클래스가 변하면 자식 클래스를 계속 수정되어야 한다. class Robot: __population = 0 def __init__(self, name, age): self.__name = name self.__age = age Robot.__population += 1 @prope.. 2021. 12. 16.