본문 바로가기

전체 글155

[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.
[Python] 캡슐화(encapsulation) - @property 와 getter와 setter의 개념 @property의 개념 class Robot: __population = 0 def __init__(self, name, age): self.__name = name self.__age = age Robot.__population += 1 def __say_hi(self): print(f"Greetings, my masters call me {self.__name}.") droid = Robot("R2-D2", 2) print(droid.__age)#에러 >>> AttributeError: 'Robot' object has no attribute '__age' 클래스 변수와 인스턴스 변수, 인스턴스 메서드를 위와 같이 private 형태로 만들었다고 하자. 이 경우에 droid 인스턴스에 __age로 .. 2021. 12. 14.
[Python] 네임스페이스(namespace)에 대한 이해 네임스페이스(namespace)에 대한 이해 namespace: 개체를 구분할 수 있는 범위 __dict__ : 네임스페이스를 딕셔너리 형태로 확인할 수 있는 매직 메서드 class Robot: # 클래스 변수: 인스턴스들이 공유하는 변수 population = 0 # 생성자 함수 def __init__(self, name, code): #self는 각각의 인스턴스 self.name = name # 인스턴스 변수 self.code = code Robot.population += 1 # 인스턴스 메서드 def say_hi(self): print(f"Grettings, my masters call me {self.name}.") # 인스턴스 메서드 def cal_add(self, a, b): return a.. 2021. 12. 8.