250x250
반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- GCP
- 상관관계
- correlation
- requests
- hadoop
- flask
- spark udf
- gather_nd
- chatGPT
- 유튜브 API
- session 유지
- grad-cam
- BigQuery
- GenericGBQException
- subdag
- API Gateway
- API
- 공분산
- XAI
- Retry
- login crawling
- Counterfactual Explanations
- youtube data
- Airflow
- tensorflow text
- UDF
- integrated gradient
- TensorFlow
- top_k
- airflow subdag
Archives
- Today
- Total
데이터과학 삼학년
어트리뷰트 (Attribute), 프로퍼티 (Property), 디스크립터 (Descriptor) 본문
반응형
어트리뷰트 (Attribute)
- 어트리뷰트는 파이썬 객체(object) 내에서 저장된 데이터(변수)나 메서드를 나타냄
- 객체의 속성(attribute)은 해당 객체의 상태나 동작을 나타내며, 객체의 내부 변수나 메서드 이름을 가리킴
- 어트리뷰트는 점(.)을 사용하여 객체의 이름 공간(namespace)에서 접근 가능
- 클래스의 멤버 변수나 메서드는 해당 클래스의 어트리뷰트
class MyClass:
class_attribute = 42 # 클래스 어트리뷰트
def __init__(self):
self.instance_attribute = 10 # 인스턴스 어트리뷰트
obj = MyClass()
print(obj.instance_attribute) # 인스턴스 어트리뷰트 접근
print(MyClass.class_attribute) # 클래스 어트리뷰트 접근
프로퍼티 (Property)
- 인스턴스 내 특수한 어트리뷰트로 어트리뷰트처럼 보이지만 실제로는 메서드
- @property 데코레이터와 관련되어 사용
- 클래스의 인스턴스 속성에 대한 접근을 제어하고자 할 때 사용되는 방법 중 하나
- 프로퍼티는 메서드처럼 보이지만, 실제로는 속성처럼 접근할 수 있음
- 변경
class Circle:
def __init__(self, radius):
self._radius = radius
@property
def radius(self):
return self._radius
@radius.setter
def radius(self, value):
if value < 0:
raise ValueError("Radius cannot be negative")
self._radius = value
circle = Circle(5)
print(circle.radius) # 프로퍼티를 통한 접근
circle.radius = 7 # 프로퍼티를 통한 설정
디스크립터 (Descriptor)
- 디스크립터는 속성의 접근을 커스터마이징하고 속성 값을 관리하기 위한 프로토콜
- __get__, __set__, __delete__ 메서드를 클래스 내에 정의하여 디스크립터를 생성할 수 있음
- __get__ ,__set__ , __delete__ 메소드 이런 메소드들 한개라도 정의되어 있는 클래스 -> 디스크립터
class DescriptorExample:
def __get__(self, instance, owner):
print("Getting the value")
return instance._value
def __set__(self, instance, value):
print("Setting the value")
if value < 0:
raise ValueError("Value cannot be negative")
instance._value = value
class MyClass:
descriptor_attr = DescriptorExample()
def __init__(self, value):
self._value = value
obj = MyClass(42)
print(obj.descriptor_attr) # 디스크립터를 통한 접근
obj.descriptor_attr = 10 # 디스크립터를 통한 설정
참고
728x90
반응형
LIST
'Python' 카테고리의 다른 글
파이썬 함수 파라미터, 리턴값 타입지정 / 파라미터 default값 설정 (0) | 2024.01.05 |
---|---|
[디자인 패턴] Singleton 싱글턴 패턴 (0) | 2023.12.09 |
부동소수점(0.1+0.2 != 0.3 ???) (0) | 2023.07.17 |
SOLID-python 원칙 : clean code (0) | 2023.07.05 |
* VS ** 차이 (리스트 or 딕셔너리 풀어낼때) (0) | 2023.05.05 |
Comments