在python中定义类属性的问题



我是python编程的新手,我试图封装下面类对象中大小的所有属性检查,但其中一个不工作(检查是否撤回大于书架内的书籍数量):

class Shelf:
def __init__(self, capacity=12):
self.capacity = capacity
self._size = 0        
def __str__(self):
return("📕" * self.size)
def deposit(self, n):
self.size = n + self.size
def withdraw(self, n):
self.size = self.size - n
print(self.size)
@property
def capacity(self):
return self._capacity
@capacity.setter
def capacity(self, capacity):
if capacity < 0:
raise ValueError("None Positive Capacity")
self._capacity = capacity
@property
def size(self):
return self._size
@size.setter
def size(self, size):
print(self.size)
if self.size < 0:
raise ValueError("Insufficient books") 
if self.size > self.capacity:
raise ValueError("OverCapacity")   
self._size = size     
def main():
shelf=Shelf()
shelf.deposit(12)
shelf.withdraw(14)
print(shelf)
if __name__ == "__main__":
main()

我期望这将返回一个图书不足的值错误,但它没有。我在代码中添加了print来查看行为。我注意到,撤回方法的工作,但结果值不是由大小属性设置检查。

你必须这样使用它,因为你给的参数(size)是-14和self。Size为0。你应该检查size而不是self.size.

def size(self, size):
if size < 0:
raise ValueError("Insufficient Cookies")
if size > self.capacity:
raise ValueError("OverCapacity")
self._size = size

在增加或减少容量时,不要忘记更改容量值。

相关内容

  • 没有找到相关文章

最新更新