我正在研究这个小类,使用@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)
我像这样初始化一个对象:Card("cheese", "ball")
,大概这应该抛出一个错误。Python 很高兴地顺其自然,并将“奶酪”分配给排名。这里发生了什么?通过赋值语法对排名设置器的所有其他调用似乎很高兴地忽略了我放置的设置器。我正在运行 Python 2.7.5。