문제

"좌표"라는 속성을 정의하는 포인트 클래스를 만들려고합니다. 그러나 그것은 내가 기대하는 것처럼 행동하지 않으며 그 이유를 알 수 없습니다.

class Point:
    def __init__(self, coord=None):
        self.x = coord[0]
        self.y = coord[1]

    @property
    def coordinate(self):
        return (self.x, self.y)

    @coordinate.setter
    def coordinate(self, value):
        self.x = value[0]
        self.y = value[1]

p = Point((0,0))
p.coordinate = (1,2)

>>> p.x
0
>>> p.y
0
>>> p.coordinate
(1, 2)

Setter가 해당 값을 설정해야하더라도 PX와 PY가 어떤 이유로 설정되지 않은 것 같습니다. 이것이 왜 그런지 아는 사람이 있습니까?

도움이 되었습니까?

해결책

그만큼 property 방법 (및 확장에 의해 @property 데코레이터) 새 스타일의 수업이 필요합니다 즉, 하위 클래스의 클래스 object.

예를 들어,

class Point:

해야한다

class Point(object):

또한, setter Python 2.6에 속성 (다른 것과 함께)이 추가되었습니다.

다른 팁

객체에서 포인트를 도출하면 작동합니다.

class Point(object):
    # ...
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top