LEEFEI571 发表于 2022-12-2 21:22:54

运算相关的魔法方法(上)-类和对象(IX)中关于__int__()魔法方法实例的困惑

各位大神:

小甲鱼Python视频中的运算相关的魔法方法(上)-类和对象(IX),在介绍__int__()魔法方法时举例如下:
class ZH_INT:
    def __init__(self, num):
      self.num = num
    def __int__(self):
      try:
            return int(self.num)
      except ValueError:
            zh = {'零':0,"一":1,"二":2,"三":3,"四":4,"五":5,"六":6,"七":7,'八':8,'九':9,
                  '壹':1,"贰":2,'叄':3,"肆":4,"伍":5,"陆":6,"柒":7,"捌":8,"玖":9}
            result = 0
            for each in self.num:
                if each in zh:
                  result += zh
                else:
                  result += int(each)
                result *= 10
            return result // 10
其中我不太明白以下几点:
1.
else:
      result += int(each)
这块语句具体起了什么作用?跟上面try:return int(self.num)语句有何区别?
2.
   result *= 10
return result // 10
这块语句起了什么作用?为何要先给result自身乘以10,然后再除以10?

lxping 发表于 2022-12-2 21:41:20

1、你输入的内容里面可能会有汉子和数字的集合体,例如:一三14,或者:5贰零,这个时候就可以直接int()了
2、result *= 10是每一位往前进1,例如:5贰零,最先匹配出 result=5,result *= 10后 result=50 ,再匹配下一位 “贰”,这个这个时候 result = 50 + 2 = 52,以此循环
    匹配到最后一位后 result *= 10又执行了一次,使得结果大了10倍,所以输出的时候要result // 10
页: [1]
查看完整版本: 运算相关的魔法方法(上)-类和对象(IX)中关于__int__()魔法方法实例的困惑