@property デコレータで遊んで、この小さなクラスに取り組んでいます。何らかの理由で、正しく機能していません。
class Card:
def __init__(self, rank, suit):
self.rank = rank
self.suit = suit
@property
def rank(self):
return self._rank
@rank.setter
def rank(self, value):
valid_ranks = ["2", "3", "4", "5", "6", "7", "8", "9", "J", "Q", "K", "A"]
if valid_ranks.index(value):
self._rank = value
@property
def suit(self):
return self._suit
@suit.setter
def suit(self,value):
self._suit = value
def show(self):
print "{}{}".format(self.rank, self.suit)
so: のようにオブジェクトを初期化するCard("cheese", "ball")
と、おそらくエラーがスローされるはずです。Python は喜んでそれを処理し、「チーズ」をランクに割り当てます。何が起きてる?代入構文によるランクセッターへの他のすべての呼び出しは、私が配置したセッターを喜んで無視するようです。Python 2.7.5 を実行しています。