質問

私は、「座標」というプロパティを定義するポイントクラスを作成しようとしています。私は期待して、私はその理由を理解することはできませんようにしかし、それは動作していません。

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)

セッターがそれらの値を設定する「必要がある」にもかかわらず、p.xとp.yが何らかの理由で設定され取得されていないようです。これは、なぜ誰もが知っていますか?

役に立ちましたか?

解決

property方法(ひいては、@propertyデコレーター)新しいスタイルのクラスが必要ですにはobjectをサブクラスクラスすなわちます。

例えば、

class Point:

でなければなりません。

class Point(object):

また、(他のものと共に)setter属性は、Python 2.6で追加されました。

他のヒント

あなたがオブジェクトからポイントを引き出す場合、それは動作します:

class Point(object):
    # ...
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top