2417809682 发表于 2020-12-4 13:20:35

零基础学习爱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 呢?

冬雪雪冬 发表于 2020-12-4 14:35:44

如果是字符串输出其ascii之和
如果是数字,则取整输出整数。
1.5是浮点数,取整输出1

2417809682 发表于 2020-12-5 17:21:39

冬雪雪冬 发表于 2020-12-4 14:35
如果是字符串输出其ascii之和
如果是数字,则取整输出整数。
1.5是浮点数,取整输出1

我不知道哪里设置了,如果输入是数字则去输出整数啊??

冬雪雪冬 发表于 2020-12-5 20:28:57

2417809682 发表于 2020-12-5 17:21
我不知道哪里设置了,如果输入是数字则去输出整数啊??

return int.__new__(cls, arg)

2417809682 发表于 2020-12-7 11:35:25

冬雪雪冬 发表于 2020-12-5 20:28
return int.__new__(cls, arg)

感谢
页: [1]
查看完整版本: 零基础学习爱Python,第041讲:魔法方法