type在python的作用_python – 避免使用多态不起作用的type()比较

def recursive_sum(nested_num_list):

sum = 0

for element in nested_num_list:

if type(element) == type([]):

sum = sum + recursive_sum(element)

else:

sum = sum + element

return sum

我对使用type(element)== type([])感到震惊.这不仅是不好的做法,而且这个功能不适用于任何其他序列类型.多态性是避免类型比较的典型方法,但不能在此处使用.在这种情况下如何避免类型比较?我考虑过:

def recursive_sum(nested_sum_list):

sum = 0

for element in nested_num_list:

try:

sum += element

except TypeError:

sum += recursive_sum(element)

return sum

这使得该功能适用​​于其他序列,但仍然有点粗略.谢谢!

解决方法:

“sum”函数采用迭代,所以我会检查元素是否实现__iter__方法,使用“hasattr”内置函数.

像这样:

def recursive_sum(nested_num_list):

sum = 0

for element in nested_num_list:

if hasattr(element, '__iter__'):

sum = sum + recursive_sum(element)

else:

sum = sum + element

return sum

标签:python,types

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值