首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有len(someObj)不调用someObj的__len__函数的情况?

在Python中,len(someObj) 会调用 someObj__len__ 函数来获取对象的长度。如果 someObj 是一个自定义对象,那么需要在类中定义 __len__ 函数,例如:

代码语言:python
代码运行次数:0
复制
class MyObject:
    def __len__(self):
        return 10

在这种情况下,len(someObj) 会调用 someObj__len__ 函数,并返回10。

如果 someObj 是一个内置对象,例如列表、元组、字符串等,那么 len(someObj) 会直接返回对象的长度,而不需要调用 __len__ 函数。

因此,在Python中,len(someObj) 不会调用 someObj__len__ 函数的情况只会出现在 someObj 是一个内置对象的情况下。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

函数调用时堆栈变化情况

这里帧指的是每一个函数在被调用时所占有的内存空间,该空间内存放函数局部数据。 一帧数据起始位置由帧指针ebp指明,而帧另一端由栈指针esp动态维护。ESP就是当前函数栈顶指针。...,结束函数 注意:以上汇编代码对mixAdd()函数调用采用函数调用约定是__cdecl,这是C/C++程序默认函数调用约定,其重要一点就是在被调用函数 (Callee) 返回后,由调用方 (Caller...)调整堆栈,因此在main()函数调用mixAdd()地方会出现add esp 8这条指令。...return tmpi+tmpc; } 即将mixAdd()函数调用约定改为标准调用约定,那么mixAdd()函数结束时汇编代码会变成ret 8,main()函数调用mixAdd()地方会原本出现...有关函数调用约定介绍见我另一篇blog:关于函数参数入栈思考。

76410
  • Modern C++ 最核心变化是什么?

    C++ 通过拷贝构造函数和拷贝赋值操作符为类设计了拷贝/复制概念,但为了实现对资源移动操作,调用者必须使用先复制、再析构方式。否则,就需要自己实现移动资源接口。...对这样函数嵌套调用更是痛苦事情,谁用谁知道啊。...} 如果函数按值返回,return 语句又直接返回了一个栈上左值对象(输入参数除外)时,标准要求优先调用移动构造函数,如果不符再调用拷贝构造函数。...如果你要往容器内放入超大对象,那么版本 2 自然是 2 选择。...完全不用写析构函数感觉,你造吗? unique_ptr 是非常轻量封装,存储空间等价于裸指针,但安全性强了一个世纪。实际中需要共享所有权对象(指针)是比较少,但需要转移所有权是非常常见情况

    99321

    终于在 JS 中用上 WeakMap 了!

    首先,将这个值存储在目标元素属性中:这本来是可以实现,但是不太优雅,当我们审查页面元素时,希望看到一堆乱七八糟属性,特别是其他库可能也需要他们自己属性,累加起来这些标签属性可能会变得非常负载... second element const someObj = { [document.getElementById...('el1')]: 'some value' }; console.log(someObj[document.getElementById('el1')]); // 'some value...相反,它是将其转换为该对象字符串表示形式,然后将其用作 key: console.log(Object.keys(someObj)); // ['object HTMLSpanElement'] 所以以下任何一项也将访问到相同值...: console.log(someObj[document.getElementById('el2')]); // 'some value' console.log(someObj[document.createElement

    85720

    Java 多线程模式 —— Guarded Suspension 模式

    图像算法调用和机械臂控制,分别处于不同线程。对于这样多线程协作,正好可以使用 Guarded Suspension 模式。 场景二 Dubbo 调用是异步,却可以得到同步返回结果。...GuardedObject guardedObject = GuardedObject.create(1); Thread t1 = new...t2线程准备工作完成,条件满足,唤醒等待线程 t1线程访问到了受保护对象 支持超时机制 Guarded Suspension 模式 对于将异步调用转化成同步调用操作时,肯定是需要超时机制。...总结 笔者正好使用该模式,将某个串口调用第三方库 (https://github.com/NeuronRobotics/nrjavaserial) 从原先只支持异步调用,改成了也可以支持同步调用,增加了超时机制...对于多线程协作,当然还有其他方式。比如 A 线程轮询等待 B 线程结束后,再去执行 A 线程任务。对于这种情况,肯定是使用 Guarded Suspension 模式更佳。

    50540

    JS 垃圾回收机制

    因此,在适当时候解除引用,是为页面获更好性能一个重要方式。 3、在局部作用域中,当函数执行完毕时候,局部变量也就没有存在必要了,因此垃圾回收器很容易做出判断并回收。...在采用标记清除策略实现中,由于函数执行之后,这两个对象都离开了作用域,因此这种相互引用不是个问题。...但在采用引用计数策略实现中,当函数执行完毕后,objA 和 objB 还将继续存在,因为它们引用次数永远不会是 0。 假如这个函数被重复多次调用,就会导致大量内存得不到回收。...Object(); myObj.element = element; element.someObj = myObj; 循环调用 这个例子在一个 DOM元素(element)与一个原生 JavaScript...其中,变量 myObj 有一个名为 element 属性指向 element 对象;而变量 element 也有 一个属性名叫 someObj 回指 myObj。

    2.7K50

    翻译连载 | 附录 B: 谦虚 Monad-《JavaScript轻量级函数式编程》 |《你不知道JS》姊妹篇

    在轻量级函数式编程中我确实没有遇到太多需要仔细考虑 Monad 问题,这就是本文更有价值原因。但是并不是说 Monad 是没用或者是普遍 —— 恰恰相反,它很有用,也很流行。...类型 在函数式编程中有一个巨大兴趣领域:类型论,本书基本上完全远离了该领域。我不会深入到类型论,坦白说,我没有深入能力,即使干了也吃力讨好。 但是我要说,Monad 基本上是一个值类型。...方法都有不变且可预测反馈,这就是 Monad,尤其是 Maybe Monad 好处。这难道酷吗?...在 这个 Monad 中调用 ap(alice) 调用了 alice.map(..),并且传递给来自 Monad 函数。...永远不会被调用(也没有信息被打印出来),因为,frank 是一个 Nothing() 实例。这就是 Maybe monad 作用,我们 Humble(..) 工厂函数允许我们根据自身水平来选择。

    96360

    【深度剖析】JavaScript中块级作用域与函数作用域

    其次,必须显式地通过 foo() 来调用这个函数。 • 如果函数不需要函数名(或者至少函数名可以污染所在作用域),且能够自行运行,这将会更理想。...第一个片段中 foo 被绑定在所在作用域中,可以直接通过 foo() 来调用它。第二个片段中foo 被绑定在函数表达式自身函数中而不是所在作用域中。...第二种形式中用来调用 () 括号被移进了用来包装 ( ) 括号中。 • 这两种方式选择全凭个人喜好。 1....最后,参数 def(也就是传递进去函数)被调用,并将 window 传入当做 global 参数值。...• 如下代码: function process(data) { // do something } var someObj = {}; process(someObj); var btn

    24310

    JavaScript 垃圾回收

    JavaScript 内存分配 JavaScript 在定义变量时就完成了内存分配,还可以通过函数调用分配内存: /** * 值初始化 */ var s = "azerty" // 给字符串分配内存...function f(a){ return a + 2 } // 给函数(可调用对象)分配内存 // 函数表达式也能分配一个对象 someElement.addEventListener('click...', function(){ someElement.style.backgroundColor = 'blue' }, false) /** * 函数调用分配内存 */ var d = new...解决办法: obj.ele = null ele.someObj = null 将变量设置为 null 意味着切断变量和它此前引用值之间连接。...在新生区内存分配非常容易:我们只需保有一个指向内存区指针,不断根据新对象大小对其进行递增即可。当该指针达到了新生区末尾,就会有一次清理(小周期),清理掉新生区中活跃死对象。

    58810

    一起来学redis redission

    这类映射使用主要用于在特定场景下,映射缓存(MapCache)上高度频繁读取操作,使网络通信都被视为瓶颈情况。Redisson与Redis通信同时,还将部分数据保存在本地内存里。....reconnectionStrategy(ReconnectionStrategy.NONE) // 以下选项适用于不同本地缓存之间相互保持同步情况 // 缓存同步策略有以下几种...TimeUnit.SECONDS); // 一分钟以后将消息发送到指定队列 delayedQueue.offer("msg2", 1, TimeUnit.MINUTES); // 在该对象不再需要情况下...为了避免这种情况发生,Redisson内部提供了一个监控锁看门狗,它作用是在Redisson实例被关闭前,不断延长锁有效期,默认情况下,看门狗检查锁超时时间是30秒钟,也可以通过修改Config.lockWatchdogTimeout...超过这个时间后锁便自动解开: // 加锁以后10秒钟自动解锁 // 无需调用unlock方法手动解锁 lock.lock(10, TimeUnit.SECONDS); // 尝试加锁,最多等待100秒

    1.8K20

    Nodejs中模块创建与引用

    这些模块调用遵循CommonJS规范。 使用require()加载模块文件,参数值是字符串,如非nodejs自有模块,需要指定模块文件完整路径及文件名。可以使用相对路径./或绝对路径/。...通常在模块内部定义本地就是、函数或对象只能在该模块内部访问,但当需要从模块外部引用这些变量、函数或对象时,需要用到代表当前模块文件module对象exports属性,这个module.exports...换句话说,加载某个模块,其实就是加载该模块module.exports属性。弄明白这个,就可以将需要被在模块外引用变量、函数和对象放在module.exports属性值中。...some.js 模块文件 module.exports = { someValName: someVal, someFnName : someFn, someObjName: someObj...} // app.js 调用some模块文件,假设与some.js共在一个目录下 let some = require( ".

    1.4K20

    redisson应用之分布式集合

    本地缓存映射(LocalCachedMap) 在特定场景下,高度频繁读取操作让网络通信都被视为瓶颈情况时,使用Redisson提供分布式Map本地缓存RLocalCachedMapJava对象会是一个很好选择...,高度频繁读取操作让网络通信都被视为瓶颈情况时,使用Redisson提供集群模式下分布式Map本地缓存RClusteredLocalCachedMapJava对象会是一个很好选择。...SomeObject()); queue.addLast(new SomeObject()); SomeObject obj = queue.removeFirst(); SomeObject someObj...从而解决了这种现象引发个别处理节点过载情况。..., TimeUnit.SECONDS); // 一分钟以后将消息发送到指定列队 delayedQueue.offer("msg2", 1, TimeUnit.MINUTES); 在该对象不再需要情况

    48940

    JavaScript 为什么要有 Symbol 类型

    JavaScript 也有类似的概念,它是根据传递数据类型推断。如果将值传递给函数,则重新分配该值不会修改调用位置中值。但是,如果你修改是引用类型,那么修改后值也将在调用地方被修改。...{ '2': 2, foo: 'foo', bar: 'bar', '[object Object]': 'someobj' } Symbol 是什么 Symbol() 函数会返回 symbol...不幸是,与该对象交互代码仍然可以访问其键为 symbol 属性。 在调用代码尚不能访问 symbol 本身情况下,这甚至是可能。...在 Node.js 中,检查对象时(例如使用 console.log() ),如果遇到名为 inspect 对象上方法,将调用函数,并将打印内容。...JavaScript语 言本身不存在此功能,并且不适用于其他情况,例 如Web 浏览器。 它允许在给定代理时获得对底层对象访问权。

    67700

    异步爬虫写起来太麻烦?来试试 Trio 吧!

    “Async” 是“asynchronous”简写,为了区别于异步函数,我们称标准函数为同步函数,从用户角度异步函数和同步函数有以下区别: 要调用异步函数,必须使用 await 关键字。...综上所述:作为一个用户,异步函数相对于常规函数全部优势在于异步函数具有超能力:它们可以调用其他异步函数。 在异步函数中可以调用其他异步函数,但是凡事有始有终,第一个异步函数如何调用呢?...()差不多,但是因为需要使用 await 调用,所以由前面的结论我们知道这是一个异步函数等待方法。...事实这个例子没有实际用处,我们用同步函数就可以实现这个简单功能。这里主要是为了演示异步函数中通过 await 可以调用其他异步函数。...async with someobj语句和with差不多只不过它调用异步方法魔法函数:__aenter__和__aexit__。我们称someobj为“异步上下文管理器”。

    1.2K30

    ECMAScript 2021 (ES12)新特性总结

    先纵览下 ES2021 新功能,看看现在这些特性在你工作中有没有用到吧: String.prototype.replaceAll :有了这个 API,替换字符不用写正则了 Promise.any()...和 timeStyle 配置项:用来处理多语言下时间日期格式化函数 1、replaceAll 模式所有匹配都会被替代项替换。...模式可以是字符串或正则表达式,而替换项可以是字符串或针对每次匹配执行函数。...,它是去年发布标准中逻辑操作符。大家可能遇到过,如果一个变量是空,需要给它赋值为一个默认值情况。...// 如果 someObj 被垃圾回收了,则 obj 就会是 undefined let obj = ref.deref(); 5、下划线 (_) 分隔符 当你要写一个很长数字时候: let x =

    1.3K10

    javascript基础修炼(3)—Whats this(下)

    基本指向规则中作为函数调用情况,其this指向全局对象也就不难理解了。...">点击按钮 如果以第一种方式触发,则函数this指向全局; 如果以第二种方式触发,则函数this指向someObj这个对象。...异步函数 1. setTimeout( )和setInterval( ) 这里情况相当于上文中回调函数情况。 2. 事件监听 详见第7章。 3. ajax请求 几乎没有遇到过。 4....Promise 这里情况相当于上文中回调函数情况。 九. 箭头函数和this 箭头函数是ES6标准中支持语法,它诞生不仅仅是因为表达方式简洁,也是为了更好地支持函数式编程。...箭头函数内部绑定this,arguments,super,new.target,所以由于作用域链机制,箭头函数函数体中如果使用到this,则执行引擎会沿着作用域链去获取外层this。 十.

    88520

    流畅Python 1. Python数据模型(特殊方法 __func__())

    `__getitem__()、__len__()` 方法 2. 特殊方法 1....__getitem__()、__len__() 方法 举一个扑克牌例子 import collections Card = collections.namedtuple('Card_name', [...特殊方法 python解释器会自动调用,如 len(obj) ,解释器 调用 obj __len__() 方法 内置类型 __len__() 方法,抄近路,直接读取 ob_size 属性 for...__iter__() 方法 通过内置函数(如,len,iter,str等)来使用特殊方法是最好选择 不要自己随意添加特殊方法 __func__ ,将来 python版本 可能添加该方法 特殊方法:https..., self.y) # __str__() 是在 str() 或 print() 时调用,返回字符串更友好 # 请优先使用 __repr__, 如果调用 str() 但是有没有实现

    25720
    领券