第41讲的魔法方法
定义一个类继承于 int 类型,并实现一个特殊功能:当传入的参数是字符串的时候,返回该字符串中所有字符的 ASCII 码的和(使用 ord() 获得一个字符的 ASCII 码值)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. 为什么定义new的时候arg=0,我不写等于0也能出答案
2.ord()里面数字是什么原理实现直接出数字的,在附件中,我直接在idle里ord(4)就不行
1. 为什么定义new的时候arg=0,我不写等于0也能出答案
这是定义过程中设置参数的默认值,arg = 0 就是设置默认值为0,这样就可以在调用过程中不用必须进行 arg 参数的赋值操作
例如因为设置了 arg 的默认值,你这里可以直接这样调用: Nint() 不填参数,这样调用等价于 : Nint(0) 或 Nint(arg = 0)
2.ord()里面数字是什么原理实现直接出数字的,在附件中,我直接在idle里ord(4)就不行
ord 函数内填的是长度为 1 的字符串,不是整型,返回的是 ASCII 码值 或 Unicode 数值。
>>> ord('3')
51
页:
[1]