我有一个功能
def foo(bar):
#do some things
len(bar)
Run Code Online (Sandbox Code Playgroud)
如果我打电话
foo(42)
Run Code Online (Sandbox Code Playgroud)
它抛出一个例外
TypeError:'int'类型的对象没有len()
如何检查输入的值是否可以与len()一起使用?
有没有len(someObj)不调用someObj __len__
函数的情况?
我最近用(成功的)努力将前者替换为后者以加速某些代码.我想确保在某些地方len(someObj)与someObj不同的边缘情况.__len__
().
我从一个人那里听说你不应该直接使用魔法方法。我认为在某些用例中,我必须直接使用魔术方法。这么有经验的开发者,我应该直接使用python魔术方法吗?
让我们假设,我创建了3个列表,我想为它创建一个字典.例如
a= ['A', 'B', 'C', 'D']
b =[1, 2, 3, 4]
c = [9, 8, 7, 6]
Run Code Online (Sandbox Code Playgroud)
现在我想要的是创建一个这样的字典:
{'A':{'1' :'9'} , 'B':{'2':'8'}, 'C':{'3':'7'} , 'D':{'4':'6'}}
Run Code Online (Sandbox Code Playgroud)
是否有可能,有人可以帮助我吗?
直观地说,一个List
类应该实现一个属性或一个方法来检索实例的长度。幸运的是,Python 的列表有一个名为__len__
. 不幸的是,这种方法并不意味着直接使用。我应该使用一个外部函数来为我读取隐藏的方法。
这就像我需要请别人打开冰箱给我拿啤酒。啤酒在冰箱里,我有双手,我应该可以自己做。
从概念上讲,这种方法似乎很奇怪。为什么没有用于获取列表长度的属性(而不是方法)。
换句话说,我更喜欢使用foo.len
而不是foo.len()
or foo.__len__
。len(foo)
对我来说似乎更奇怪。
这个实现有解释吗?
这个答案部分回答了我的问题,但我的挫败感仍然存在。