熱線電話:13121318867

登錄
首頁精彩閱讀我開了一家餐廳
我開了一家餐廳
2022-07-20
收藏

作者:小K

來源:麥叔編程

?

今天給大家講個靈異的故事。

?

我有一個餐廳的類,有它我就可以在某街上開餐廳(實例)了。

class Restaurant: """
    經常發生靈異事件的餐廳
    """ # 實例化時正在餐廳的食客,這里的diner是開業時來的食客 def __init__(self, diner=[]): self.diner = diner # 食客進入餐廳 def enter(self, name): self.diner.append(name) # 食客走出餐廳 def out(self, name): self.diner.remove(name)

張三拿著我的“圖紙”開了一家kfc,

# 張三開了一家肯德基,麥叔和Kevin是老客戶,所以早早來了 kfc = Restaurant(["Maishu","Kevin"]) # 當前在餐廳的食客 print(kfc.diner) # Kevin吃完離開了 kfc.out("Kevin") # Jason進來了 kfc.enter("Jason") # 當前在餐廳的食客 print(kfc.diner)

輸出結果:

['Maishu', 'Kevin'] ['Maishu', 'Jason'] 

李四一看kfc生意不錯在隔壁開了一家山寨的kfc -- ktc,

ktc = Restaurant() # 當前在餐廳的食客 print(ktc.diner) # 人氣差,開業時沒人關顧,Annie前來嘗鮮 ktc.enter("Annie") # Annie的追求者Dave也跟著進來了 ktc.enter("Dave") # 當前在餐廳的食客 print(ktc.diner)

輸出結果:

[]
['Annie', 'Dave']

王五一看,這兩家店生意都還不錯,于是又山寨了李四的ktc,在街上開起了kfo,

# kfo新店開張,沒有人來。 kfo = Restaurant() # 當前在餐廳的食客 print(kfo.diner) # 明明沒開張確有兩名幽靈食客??? kfo.out("Annie") # Annie給Dave發了好人卡走了 # 當前在kfo餐廳的食客 print(kfo.diner) # 此時在李四ktc餐廳的食客 print(ktc.diner)

輸出結果:

['Annie', 'Dave'] ['Dave'] ['Dave'] 

?

發生在王五kfo餐廳的事,是不是很詭異,實例化的時候明明沒傳進去任何參數,實例卻自帶倆“食客”。。。

?

?

還有,王五kfo餐廳中的Annie走后,李四的ktc餐廳中的Annie也走了。感覺冥冥之中有一只無形的手在操作這一切。

?

科學解釋這一現象

問題的根源在于默認實參在定義函數時計算(通常在加載模塊時),因此默認實參變成了函數對象的屬性。

如果默認實參是可變對象,而且修改了它的值,那么后續的函數調用都會受到影響。

為了避免這個問題,通常使用None作為接受可變值的參數的默認值。

class Restaurant: """
    正常的餐廳
    """ # 實例化時正在餐廳的食客,這里的diner是開業時來的食客 def __init__(self, diner=None): if diner == None:
            self.diner = [] else:
            self.diner = diner # 食客進入餐廳 def enter(self, name): self.diner.append(name) # 食客走出餐廳 def out(self, name): self.diner.remove(name)

如果你希望我更新某個特定小知識,歡迎給我留言。

我開了一家餐廳

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢