class Box:
def __init__(self, length, width):
self.length = length
self.width = width
def get_length(self):
return self.length
def get_width(self):
return self.width
def double(self):
self.length = 2*(self.length)
self.width = 2*(self.width)
return self.length
return self.width
我下面有这个问题。
self.assertEqual(b1.double().get_length(),32)
AttributeError: 'int' object has no attribute 'get_length'
这些length
和width
属性应该是私有的,并且只能通过getter进行访问。我该如何解决?
double()
返回一个整数(self.length
)。您试图调用该号码的方法get_length()
,但它没有此号码。建议的解决方案:将return self.length
替换为return self
。double()
方法有两个return语句,其中的第2个将永远不会执行,因此是第一个发行。第二个问题是,您似乎想返回一个新的Box
对象,该对象的值加倍,但是您正在做的是将
current
的值加倍,然后返回长度(一个[ C0])。这可能是您想要做的:int
def double(self): return Box(self.__length * 2, self.__width * 2)
这样会给您您所期望的-Box(1, 2).double().get_length()
。
2
和self.length
就足够了。如果要在访问时添加一些逻辑,请使用self.width
装饰器。