기본 데이터 속성 (즉, 내부 백업 저장소)의 값을 검색하는 것이 주된 Python 공용 메소드가 있다고 가정 해보십시오. 이 방법은 게으른 평가 논리 (lazy evaluation logic) 등을 가질 수있다. 속성은 그러한 방법의 한 예이다.Python에서 내부 속성의 기본 저장소에 대한 기본 명명 규칙은 무엇입니까?
그런 다음 데이터 속성의 밑줄 접두어를 제외하고 메서드 및 데이터 속성에 동일한 이름을 사용하는 것이 당연합니다. (Python's "property" documentation에서) example--
class C(object):
def __init__(self):
self._x = None
@property
def x(self):
"""I'm the 'x' property."""
return self._x
는
그러나이 방법은 내부 사용하는 경우 몇 가지 기본 규칙 무엇 때문에 그 자체가 밑줄로 시작되는 내용은? 배킹 스토어 앞에 두 개의 밑줄을 붙이면 이름 맹 글링을 불러 오므로 이상적인 것은 아닙니다.
두 가지 가능성이
def _get_x(self):
return self._x
def _x(self):
return self._x_
파이썬 스타일 (밑줄을 추가) 두 번째 말한다 이따가 수도 있지만, 단지 예약 된 키워드와 충돌을 피하기 위해 사용되어야한다.
내가 코멘트 -1 점수를 가질 수 없습니다 기뻐요. –
개인 재산을 가지고 있으면 많은 사람들이 혼란 스러울 것이라고 생각합니다. 아마도'cached_property'라고 불리는'property'에서 자신 만의 클래스를 파생시키고 getter를 아직 호출하지 않았다면 getter를 호출하기 위해'__get__'을 정의하고, 아직 가지고 있지 않다면 리턴 한 값을 반환 할 것을 제안합니다. 라고 불렀다. 그리고'__delete__'를 정의하여 캐시 된 값을 잊어 버리십시오. – Omnifarious
나는 그것을 할 수 있는지를보기 위해 나 자신을 위해 그 중 하나를 썼다. 실제로 그렇게 할 수는 있지만 약간 추한 것입니다. 약한 참조를 사용해야합니다. 즉, 속성이 들어있는 클래스는 약한 참조 가능이어야합니다. – Omnifarious