【发布时间】:2021-12-31 00:18:43
【问题描述】:
class BigThing:
def __init__(self, size):
self.size = size
def size(self):
if isinstance(self.size, int):
return self.size
else:
return len(self.size)
class BigCat(BigThing):
def __init__(self, size, weight):
super().__init__(size)
self.weight = weight
def size(self):
if (self.weight > 15) and (self.weight <= 20):
return "Fat"
elif (self.weight > 20):
return "Very Fat"
else:
super().size(self)
def main():
cutie = BigCat("mitzy", 22)
print(cutie.size())
main()
预期输出:非常胖
当前输出:TypeError: 'str' object is not callable
我不知道如何修复它,也没有逻辑问题阻止代码运行。
【问题讨论】:
-
请注意
BigThing、self.size中如何引用__init__中设置的属性、 和 方法(虽然不是一次)。方法和“非方法属性”没有单独的命名空间。一个可以而且将会覆盖另一个。 -
覆盖大小功能是故意的。
-
如果用数字覆盖方法,就不能再作为函数调用了。
-
我想你要找的是
@property。