[英]Why aren't my @property decorators working?
我正在研究這個小類,與@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。
您正在初始化rank
和suit
屬性,但不帶下划線,但您的屬性方法具有_rank
和_suit
。
如果項目不在列表中,則list.index
引發錯誤。 你應該做
if value in valid_ranks:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.