Python 대상 속성 자동 업데이트 작업 예제
소프트웨어 디자인 에서 이런 문제 에 부 딪 힐 수 있다.어떤 속성 들 은 서로 관련 이 있다.이렇게 하면 그 중의 한 속성 이 변화 할 때 다른 속성 도 변화 에 따라 야 한다.
먼저 예시 코드 를 보십시오.
# -*- coding:utf-8 -*-
#!python3
class DemoClss:
def __init__(self,val1,val2):
self.val1= val1
self.val2= val2
self.sum= self.val1 + self.val2
obj = DemoClss(123,234)
print(obj.sum)
obj.val1 = 321
print(obj.sum)
코드 의 실행 결 과 는 다음 과 같 습 니 다.두 결과 일치!사실 이런 유사 한 디자인 에서 우 리 는 대부분 sum 속성 이 따 르 는 두 가지 수치 가 자동 으로 변화 하 기 를 원한 다.그러나 위의 이런 방식 은 분명히 안 된다.왜냐하면 이런 디자인 의 효력 은 초기 화 할 때 만 효력 이 발생 하기 때문이다.
그렇다면 언제든지 화 해 를 구 하 는 방법 을 이 루 려 면 어떻게 해 야 할 까?사실 우 리 는 방법 을 통 해 실현 할 수 있다!코드 개선 은 다음 과 같 습 니 다.
# -*- coding:utf-8 -*-
#!python3
class DemoClss:
def __init__(self,val1,val2):
self.val1= val1
self.val2= val2
def sum(self):
return self.val1 + self.val2
obj = DemoClss(123,234)
print(obj.sum())
obj.val1 = 321
print(obj.sum())
프로그램의 실행 결 과 는 다음 과 같다.이런 개선 방식 은 실행 가능 하지만,늘 좀 불편 하 다 고 느낀다.전체적인 실현 은 OOP 의 어떤 장점 도 나타 내지 않 았 기 때문에 이것 은 사실 함수 호출 일 뿐이다.그럼 좀 개선 해 주 시 겠 어 요?우리 가 바 라 는 것 은 또 어떤 효과 입 니까?사실은 우리 가 필요 로 하 는 기능 은 기능 을 초기 화하 고 방법 기능 을 하 는 결합 체 여야 한다.이런 유사 한 기능 의 결합 체 는 존재 하 는데 그것 이 바로 특성 이다.특성 은 방법 처럼 보 이 는 속성 으로 인용 할 때마다 관련 방법 을 실행 합 니 다.이렇게 코드 개선 은 다음 과 같 습 니 다.
# -*- coding:utf-8 -*-
#!python3
class DemoClss:
def __init__(self,val1,val2):
self.val1= val1
self.val2= val2
@property
def sum(self):
return self.val1 + self.val2
obj = DemoClss(123,234)
print(obj.sum)
obj.val1 = 321
print(obj.sum)
프로그램 실행 결 과 는 다음 과 같 습 니 다.이렇게 해서 관련 속성의 자동 업 데 이 트 를 실현 하여 사람들의 정상 적 인 사고 에 더욱 부합 되 는 것 처럼 보인다.
Python 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 논문 에서 말 한 것 이 여러분 의 Python 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.