Pythonオブジェクト@property
-
20-09-2019 - |
質問
私は、「座標」というプロパティを定義するポイントクラスを作成しようとしています。私は期待して、私はその理由を理解することはできませんようにしかし、それは動作していません。
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):
# ...
所属していません StackOverflow