int强转面向对象分析
import math
class MyInt():
def __call__(self, num):
# 针对bool
if isinstance(num, bool):
if num == False:
return 0
else:
return 1
# 针对int
elif isinstance(num, int):
return num
# 针对float
elif isinstance(num, float):
# 方法一
# a,b = str(num).split(".")
# return eval(a) 执行字符串按代码
# 方法二 按负数取高 整数取底
return math.floor(num) if num >= 0 else math.ceil(num)
elif isinstance(num, str):
# 如果是字符串且有符号的情况
if (num[0] == "+" or num[0] == "-") and num[1:].isdecimal():
# 检测是否是 +999999 这种情况
# 获取当前字符串的正负值
if num[0] == "+":
sign = 1
elif num[0] == "-":
sign = -1
# 截取符号后面的字符串传递
return self.calc(num[1:], sign)
elif num.isdecimal():
# 无符号归于正数
return self.calc(num)
else:
# 检测是否是 +999999abc 这种情况
return "这个算不了兄弟~"
# 计算最后的数值
def calc(self, num, sign=1):
# 去掉前面的"0"字符串
num = num.lstrip("0")
# print(num , type(num) , "<==============>")
if num == "":
# 0全去掉的情况是空字符串
return 0
# eval将str按照python解析为int 如果正常有符号位的eval无法识别为py代码 不可解析
return eval(num) * sign
标签:强转,elif,return,int,sign,num,字符串,面向对象分析
From: https://www.cnblogs.com/wbcde116/p/18078550