第041讲动动手第2题疑问
代码是:class Nint(int):
def __new__(cls, arg=0):
if isinstance(arg, str):
total = 0
for each in arg:
total += ord(each)
arg = total
return int.__new__(cls, arg)
其中if isinstance(arg, str):这行代码我不明白有啥作用?感觉没有也可以运行。但发现去掉后
print(Nint(123))会报错,请问是咋回事呀? 如果 arg 是字符串则执行以下代码 zltzlt 发表于 2020-3-7 18:00
如果 arg 是字符串则执行以下代码
那么加上这个判断语句后,如果我还是print(Nint(123))的话,应该也会报错呀,但是为什么又没出现这种情况? 好好学不玩手机 发表于 2020-3-7 20:21
那么加上这个判断语句后,如果我还是print(Nint(123))的话,应该也会报错呀,但是为什么又没出现这种 ...
不会,如果你去掉那一句,那么默认执行 for each in arg 。由于整数不是可迭代对象,所以会报错。
加上那一句,只有当 arg 是字符串时才执行 for each in arg 。
页:
[1]