如何解决在 Python 中使用具有以下语法的类的魔术方法有什么区别:method(member) 和 member.__method__()?
Mexico_66 = Product('Mexico 66 VIN',99.90,4)
在类中,我定义了以下魔术方法:
def __len__(self):
print(self.quantity)
当我尝试使用具有以下语法的魔术方法时:len(Mexico_66),代码执行但在最后发出错误:TypeError: 'nonetype' object cannot be interpret as an integer
但是,当使用以下语法执行代码时:Mexico_66.len(),没有出现错误。
我不太明白为什么在第一种情况下会导致错误以及执行魔术方法的第一个和第二个选项之间有什么区别。如果有人能解释一下,我将不胜感激。
解决方法
__len__
魔法方法应该返回一些东西,在这种情况下,可能是 return self.quantity
。您收到类型错误是因为您的方法隐式返回 None
。
使用这些魔术方法的想法是为常用函数(如 len()
)定义行为。如果您使用 instance.__len__()
调用它,则您没有使用魔术方法,您只是像常规实例方法一样调用它,这就是为什么您在该用例中看不到任何错误
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。