零基础学习爱Python,第041讲:魔法方法
2. 定义一个类继承于 int 类型,并实现一个特殊功能:当传入的参数是字符串的时候,返回该字符串中所有字符的 ASCII 码的和(使用 ord() 获得一个字符的 ASCII 码值实现如下:
>>> print(Nint(123))
123
>>> print(Nint(1.5))
1
>>> print(Nint('A'))
65
>>> print(Nint('FishC'))
461
代码清单:
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)
为什么输入1.5会打出来1 呢?
如果是字符串输出其ascii之和
如果是数字,则取整输出整数。
1.5是浮点数,取整输出1 冬雪雪冬 发表于 2020-12-4 14:35
如果是字符串输出其ascii之和
如果是数字,则取整输出整数。
1.5是浮点数,取整输出1
我不知道哪里设置了,如果输入是数字则去输出整数啊?? 2417809682 发表于 2020-12-5 17:21
我不知道哪里设置了,如果输入是数字则去输出整数啊??
return int.__new__(cls, arg) 冬雪雪冬 发表于 2020-12-5 20:28
return int.__new__(cls, arg)
感谢
页:
[1]