首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dunder方法

Dunder方法
EN

Stack Overflow用户
提问于 2015-10-09 05:20:39
回答 1查看 1.2K关注 0票数 1

我有两个例子:

代码语言:javascript
复制
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之外使用过。

EN

回答 1

Stack Overflow用户

发布于 2015-10-09 06:07:29

只有很小的差别。函数只是一个叫做len的函数。有点像

代码语言:javascript
复制
def len(x):
   return x.__len__()

当然,您可以覆盖内置的len,但这是转储(除了调试之外)。惟一不同的是len(x)更容易阅读,x.__len__允许您创建自己的运算符实现。x.__len__也可以更快一些,但它是使用它的一个很好的理由。

当操作符有两个参数时,它的实现就会做得更多。a+b一开始尝试,是否为可调用的a.__add__,如果不是,则尝试调用b.__radd__

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33030434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档