Property 데코레이터
Coddy Python 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 64개 중 14번째.
프로퍼티 데코레이터를 사용하면 간단한 속성 구문을 유지하면서 속성에 접근하고 수정하는 방식을 제어할 수 있습니다.
속성 getter가 있는 클래스의 예입니다:
class Person:
def __init__(self, name, age):
self._name = name
self._age = age
@property
def age(self):
return self._age속성을 일반적인 특성처럼 사용하세요:
person = Person("Alice", 30)
print(person.age)출력:
30실제로는 메서드를 호출하는 것이지만, 괄호 없이 age에 접근한다는 점에 주목하세요.
값을 설정할 때 데이터를 검증하는 세터를 추가하세요:
class Person:
def __init__(self, name, age):
self._name = name
self._age = age
@property
def age(self):
return self._age
@age.setter
def age(self, value):
if value < 0:
raise ValueError("Age cannot be negative")
self._age = value이제 자동 유효성 검사를 통해 나이를 설정할 수 있습니다:
person = Person("Alice", 30)
person.age = 31 # 유효성 검사를 수행하는 setter를 사용함
print(person.age) # getter를 사용함
# 이 코드는 오류를 발생시킴:
# person.age = -5 # ValueError: 나이는 음수일 수 없음출력:
31값을 계산하는 계산된 속성을 만드세요:
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
@property
def area(self):
return self.width * self.height
rect = Rectangle(5, 3)
print(rect.area) # 5 * 3 = 15를 계산합니다출력:
15핵심 요점: 프로퍼티 데코레이터를 사용하면 메서드가 속성처럼 보입니다. getter에는 @property를, setter에는 @attribute_name.setter를 사용하세요. 이렇게 하면 간단한 속성 접근 문법을 유지하면서 데이터 검증과 계산된 값을 사용할 수 있습니다.
챌린지
중급섭씨와 화씨 간 변환을 수행하는 temperature.py의 Temperature 클래스를 완성하세요. 그런 다음 이 클래스를 driver.py에서 사용하여 온도 변환을 테스트하세요. 두 파일의 TODO 주석에 있는 단계별 지침을 따르세요.
각 변환을 [celsius]°C is [fahrenheit]°F 형식으로 출력하세요. 섭씨 값은 입력된 그대로, 화씨 값은 Python이 계산한 그대로 표시해야 합니다. 숫자를 반올림하거나 형식을 지정하지 마세요. driver가 출력하는 두 줄은 다음과 같습니다.
25°C is 77.0°F
37.0°C is 98.6°F직접 해보기
# TODO: temperature 모듈에서 Temperature 클래스를 가져오세요
# 클래스를 테스트하세요:
# TODO: 25°C인 Temperature 인스턴스를 생성하세요
temp = None # 실제 Temperature 인스턴스로 바꾸세요
# TODO: Celsius와 Fahrenheit 값을 모두 출력하세요
# TODO: "25°C is 77.0°F" 형식을 사용하세요 (반올림하거나 형식을 변경하지 말고 두 값을 그대로 출력하세요)
# TODO: 온도를 98.6°F로 설정하세요
# TODO: 변환이 제대로 작동하는지 확인하기 위해 두 값을 다시 출력하세요
# TODO: 이전과 같은 형식을 사용하세요이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러