-2
我試圖使用屬性裝飾和執行基本的操作,而這樣做收到錯誤以及面臨着缺失者問題,而不是從代碼中獲得預期的輸出。物業刪除器不工作
class Numbers(object):
Multiplier = 4
def __init__(self, x, y):
self._x = x
self._y = y
def add(self):
return self._x + self._y
@classmethod
def multiply(cls, a):
return a*cls.Multiplier
@staticmethod
def subtract(b,c):
return b-c
@property
def values(self):
return "(%d,%d)" % (self._x, self._y)
@values.setter
def values(self, value1, value2):
self._x = value1
self._y = value2
@values.deleter
def values(self):
print('deleting')
del self._x
del self._y
val = Numbers(2,4)
print(val.values)
print(val._x)
print(val._y)
print(val.multiply(5))
print(val.subtract(8,2))
print(val.add())
val.values = (34,45)
print(val.values)
del (val.values)
print(val.values)
的問題是與*二傳手*,肯定?它應該只有一個參數,即x和y值的二元組。例如。你可以使setter的def值(self,(value1,value2)):',儘管這與Python 3.x不兼容。但請注意,您應該給[mcve],而不僅僅是「獲取錯誤以及面臨問題」*。 – jonrsharpe
感謝您的建議。編輯的代碼,仍然有錯誤「AttributeError的:‘數字’對象有沒有屬性‘_x’」而這正是應該發生的,你是怎麼想到當你明確地將其刪除後再次訪問屬性@jonrsharpe –
? – jonrsharpe