零基础PYTHON课后习题041 动动手2
我都程序运行后有bug,想知道怎么改能实现题目要求的功能class Nint(int):
def __new__(cls,x=0):
self.x = x
Sum = 0
try:
int(self.x)
print(self.x)
except ValueError :
for each in self.x:
Sum += ord(each)
print(Sum)
改成这样:
class Nint(int):
def __new__(cls, x):
if type(x) == int:
return x
return sum(ord(each) for each in x)
print(Nint("FishC")) qiuyouzhi 发表于 2020-8-11 19:50
改成这样:
太强了,能说一下小甲鱼给的答案中的
def __new__(cls, arg=0):
和
return int.__new__(cls, arg)
是什么含义吗,看视频时一脸懵 本帖最后由 qiuyouzhi 于 2020-8-11 20:07 编辑
张图南 发表于 2020-8-11 19:56
太强了,能说一下小甲鱼给的答案中的
def __new__(cls, arg=0):
和
__new__的用法就是设置实例,举个栗子:
class A:
def __new__(cls, a, b):
return a + b
a = A(5, 3)
print(a)
结果就应该是8.
而return int.__new__(cls, arg)就相当于把实例设置为int(arg) qiuyouzhi 发表于 2020-8-11 20:06
__new__的用法就是设置实例,举个栗子:
理解深了一些,谢谢
页:
[1]