본문 바로가기

Python18

[Python] 캡슐화 캡슐화 - 객체의 일부 구현 내용을 외부 접근으로부터 막기 위함 - 객체의 속성과 행동을 하나로 묶기 위함 class Citizen: """주민 클래스""" drinking_age = 19 def __init__(self, name, age, resident_id): """이름, 나이, 주민등록번호""" self.name = name self.age = age self.resident_id = resident_id def authenticate(self, id_field): """본인이 맞는지 확인하는 메소드""" return self.resident_id == id_field def able_to_drink(self): """음주 가능 나이인지 확인하는 메소드""" return self.age >= C.. 2022. 4. 8.
[Python] 추상 클래스 사용하기 (@abstractmethod) 파이썬은 추상 클래스(abstract class)라는 기능을 제공한다. 추상 클래스는 메서드의 목록만 가진 클래스이며 상속받는 클래스에서 메서드 구현을 강제하기 위해 사용한다. 먼저 추상 클래스를 만들려면 import로 abc 모듈을 가져와야 한다( abc는 abstract base class의 약자). 그리고 클래스의 ( )(괄호) 안에 metaclass=ABCMeta를 지정하고, 메서드를 만들 때 위에 @abstractmethod를 붙여서 추상 메서드로 지정한다. 여기서는 from abc import *로 abc 모듈의 모든 클래스와 메서드를 가져온다. 만약 import abc로 모듈을 가져왔다면 abc.ABCMeta, @abc.abstractmethod로 사용해야 한다. 그럼 학생 추상 클래스 St.. 2022. 4. 7.
[Python] 데코레이터 사용하기 파이썬은 데코레이터(decorator)라는 기능을 제공한다. 데코레이터는 장식하다, 꾸미다라는 뜻의 decorate에 er(or)을 붙인 말인데 장식하는 도구 정도로 설명할 수 있다. 지금까지 클래스에서 메서드를 만들 때 @staticmethod, @classmethod, @abstractmethod 등을 붙였는데, 이렇게 @로 시작하는 것들이 데코레이터이다. 데코레이터 만들기 데코레이터는 함수를 수정하지 않은 상태에서 추가 기능을 구현할 때 사용한다. 예를 들어서 함수의 시작과 끝을 출력하고 싶다면 다음과 같이 함수 시작, 끝 부분에 print를 넣어주어야 한다. def hello(): print('hello 함수 시작') print('hello') print('hello 함수 끝') def world.. 2022. 4. 7.
[Python] 프로퍼티 (Property) 사용하기 (2/2) class Citizen: def __init__(self, age_value): self._age = age_value @property def age(self): print("나이를 리턴합니다.") return self._age @age.setter def age(self, age_value): print("나이를 새로 설정합니다.") self._age = age_value citizen = Citizen(20) print(citizen.age) 위 코드에서 마지막 줄에 있는 citizen.age 이 부분이 실행될 때 age 변수의 값을 읽는 것이 아니라 바로 아래의 age 메소드가 실행된다. age 메소드 위에 붙은 @property 데코레이터 때문이다. 코드의 실행결과는 아래와 같다. 나이를 리턴.. 2022. 4. 7.