# ### __call__ 魔術方法
觸發時機:把物件當作函式呼叫的時候自動觸發
功能: 模擬函式化操作
引數: 引數不固定,至少乙個self引數
返回值: 看需求
# (1)基本語法
class myclass():
def __call__(self):
print("__call__方法被呼叫")
return "done"
obj = myclass()
res = obj()
print(res)
# (2) 模擬洗衣服的過程
class wash():
# 使用call方法,進行統一的呼叫
def __call__(self,something):
self.something = something
print("以下是洗{}的過程:".format(something))
self.step1()
self.step2()
self.step3()
def step1(self):
print("第一步放水,把{}扔盆裡".format(self.something))
def step2(self):
print("第二部匯入洗衣液,金紡,藍月亮,吊牌洗衣皂扔盆裡搓")
def step3(self):
print("第三部曬一下,穿上")
obj = wash()
# 一邊寫一邊罵街
# obj.step1()
# obj.step2()
# obj.step3()
# 小王是個快樂的孩子
obj("褲衩")
# (3) 模擬內建int方法實現myint
# print(int(-5.9))
import math
class myint():
def stoi(self,n,sign=1):
res = n.lstrip("0")
if res == "":
return 0
num = eval(res) * sign
return num
def __call__(self,n):
# 判斷的是布林型別
if isinstance(n,bool):
if n == true:
return 1
else:
return 0
# 判斷的是整型
elif isinstance(n,int):
return n
# 判斷的是浮點型
elif isinstance(n,float):
if n < 0:
return math.ceil(n)
else:
return math.floor(n)
# 判斷的是字串
elif isinstance(n,str):
if (n[0] == "-" or n[0] == "+") and n[1:].isdecimal():
if n[0] == "+":
sign = 1
elif n[0] == "-":
sign = -1
return self.stoi(n[1:],sign)
elif n.isdecimal():
# 如果能夠走到這個條件,一定沒有帶任何正負號
return self.stoi(n)
else:
return "對不起,老弟,這個算不了"
else:
print("對不起,老哥,這個算不了")
myint = myint()
res =myint(false)
print(res)
res = myint(5)
print(res)
res = myint(-5.5)
print(res)
# res = eval("123454")
# print(res,type(res))
# res = myint("12345")
# print(res,type(res))
# res = int("-00000000000111222abcdfrf")
# print(res)
# res = myint("+00000000000111222")
res = myint("*&^%$#@00000000000000000")
print(res)
# res = int("*&^%$#@00000000000000000")
# res = eval("")
# print(res)
res = int(5+6)
print(res)
res = myint(5*6)
print(res)
# res = myint([1,3,4])
res = int([1,3,4])
print(res)
python 魔術方法
魔術方法 呼叫方式 解釋 new cls instance myclass arg1,arg2 new 在建立例項的時候被呼叫 init self instance myclass arg1,arg2 init 在建立例項的時候被呼叫 cmp self,other self other,self o...
Python魔術方法
參考文章 python 魔術方法指南 魔術方法,顧名思義是一種可以給物件 類 增加魔法的特殊方法,它們的表示方法一般是用雙下劃線包圍 如 init from os.path import join class fileobject 給檔案物件進行包裝從而確認在刪除時檔案流關閉 def init se...
Python 魔術方法
usr bin env python coding utf 8 author ray time 2018 12 6 魔術方法例項 init 建構函式,在生成物件時呼叫,用來初始化值 del 析構函式,釋放物件時使用 比如編輯檔案,把關閉檔案的操作寫在此方法中,程式結束時就會關閉軟體 str 使用pr...