我有两个例子:
a = [1,2,3]
b = 4
print (a.__len__())
print (len(a))
print(b.__add__(4))
print (b + 4)我想我的问题是,当使用__len__魔术方法和内置的len()方法时有什么区别吗?我看到人们使用__len__的唯一一次是试图找出用户创建的类的对象的长度。
与其他with方法(如__str__或__add__ )相同,一般情况下,它们似乎从未在类或OOP之外使用过。
发布于 2015-10-09 06:07:29
只有很小的差别。函数只是一个叫做len的函数。有点像
def len(x):
return x.__len__()当然,您可以覆盖内置的len,但这是转储(除了调试之外)。惟一不同的是len(x)更容易阅读,x.__len__允许您创建自己的运算符实现。x.__len__也可以更快一些,但它是使用它的一个很好的理由。
当操作符有两个参数时,它的实现就会做得更多。a+b一开始尝试,是否为可调用的a.__add__,如果不是,则尝试调用b.__radd__。
https://stackoverflow.com/questions/33030434
复制相似问题