# ###___call__魔法函数
'''
触发时机:把对象当作函数调用的时候自动触发
功能:模拟函数化操作
参数:参数不固定,至少一个self参数
返回值:看需求
'''
#(1).基本语法
import math
class MyClass():
def __call__(self):
print('call方法被触发')
obj=MyClass()
obj()
#(2)洗衣服的过程
class Wash():
def __call__(self):
self.step1()
self.step2()
def step1(self):
print('把衣服扔进洗衣机')
def step2(self):
print('启动开关')
obj=Wash()
'''
方法一:
obj.step1()
obj.step2()
'''
'''
方法二:
obj()
'''
#####根据int方法自定义类
'''bool int float'''
class MyInt():
def myfunc(self,num,sign=1):
print(num)
print(sign)
res=num.lstrip('0')
if res=='':
return 0
return eval(res)*sign
def __call__(self,n):
#判断是不是bool
if isinstance(n,bool):
if n==True:
return 1
else:
return 0
#判断是不是int
elif isinstance(n,int):
return n
#判断是不是float
elif isinstance(n,float):
if n>0:
return math.floor(n)
else:
return math.ceil(n)
#判断是不是字符串
elif isinstance(n,str):
sign=1
#判断是否带符号
if (n[0]=="+" or n[0]=="-") and n[1:].isdecimal():
if n[0]=="+":
sign=1
elif n[0]=="-":
sign=-1
return self.myfunc(n[1:],sign)
myint=MyInt()
res=myint(True)
res=myint(-19.99)
res=myint('-00000010000')
print(res)
Python 魔法函数 __call__
最新推荐文章于 2024-06-13 13:58:43 发布