저는 Python 속성을 처음 사용합니다. 해당 속성을 설정할 때 속성 값이 허용 된 범위 내에 있음을 보장하는 "설정자"를 만들기 위해 이들을 사용하려고합니다.클래스 내에서 파이썬 속성에 액세스
일반적인 사용 예 내가 같이 발견
class C(object):
def __init__(self):
self.__x = None
def getx(self):
print "+++ getx()"
return self.__x
def setx(self, v):
if (v > 0):
print "+++ setx({0})".format(v)
self.__x = v
def delx(self):
print "+++ delx()"
del self.__x
x = property(getx, setx, delx, "Me property 'x'.")
이 간단한 예에서는, 세터 "setx"은 양의 값은 속성 자체 .__ X에 할당 할 수 있도록합니다. 여태까지는 그런대로 잘됐다. 그러나이 코드를 살펴보면 클래스 내에서 속성을 사용할 수 있는지 궁금해하기 시작했습니다. 예를 들어, 나는 다음과 같은 생성자를 가질 수 있는지 궁금해 : 순서
def __init__(self):
self.x = None
는 세터 속성 자체 .__ X가 유효한 값으로 설정되고 있음을 확인하기 위해 바로 생성자 내에서 전화를받을 수 있습니다. 조금 더 나아가서, 수업 내 다른 곳에서도 똑같이 할 수 있을지 궁금합니다. (게터와 세터의 명백한 예외를 제외하고는). 그렇다면 좋은 프로그래밍 실습으로 간주됩니까? 그렇지 않은 경우 어떤 대안이 있습니까? 나는 이것에 관해 정말로 혼란 스럽다.
감사합니다.
클래스의 내부 또는 외부에서 속성에 액세스하는 데 차이가 없습니다 (그리고이 문제를 작성하는 것보다 파이썬 인터프리터에서 시도하는 것이 시간이 적을 것입니다). 속성이나 실제 속성에 접근하는 것이 더 좋은지 알고 싶다면, 이것은 아마도 특정 사용 사례에 의존 할 것이다. 예에서'self .__ x = None'을'self.x = None'으로 바꾸는 것은 의미가 없다. setter는 값> 0 및'None> 0 == False'만을 설정하기 때문입니다. – l4mpi
답장을 보내 주셔서 감사합니다. 실제로 질문을 제출하기 전에이 작업을 시도했지만 코드가 작동하는 것을 발견하지 못했기 때문에이 작업이 좋은 수행인지 여부 또는 내가 알지 못하는 잡기가 있는지 여부를 알 수 없었습니다. 의. 감사! –