[問題]class內呼叫function有沒有括號的差別?

看板Python作者 (鳥科學先生)時間10年前 (2015/02/27 14:00), 編輯推噓0(005)
留言5則, 1人參與, 最新討論串1/1
小弟最近初學python有一個問題有點困惑 我用Tkinter寫了一個小視窗 from Tkinter import * class radio_practice: def __init__(self, master): self.v = IntVar() self.frame = Frame(master) self.label = Label(master, text = 'choose a language', justify = LEFT, font = ('times',26)) self.label.pack(fill = BOTH, side = TOP) self.botton1 = Radiobutton(master, text = 'python', variable = self.v, value = 1, command = self.print_variable) self.botton1.pack(fill = BOTH, side = LEFT, expand = True) self.botton2 = Radiobutton(master, text = 'C#', v ariable = self.v, value = 2, command = self.print_variable) self.botton2.pack(fill = BOTH, side = LEFT, expand = True) def print_variable(self): print self.v.get() root = Tk() program_choose = radio_practice(root) root.mainloop() 後面那個print_variable function是為了觀察一下self.v會不會被我按下button後改變 的狀況,但是我的command如果 = self.print_variable()程式一跑self.v就會被印出來 而且任憑我怎麼點按鈕也不會顯示出被改過的self.v,但是如果沒有那個括號就可以如 預期看到self.v被改變 想請問在class裡面呼叫function有沒有括號的意義有何不同? 檔案請由此下載: https://www.dropbox.com/s/mgml6286tfmi5g8/radiobutton.py?dl=0 -- 食色性也 美食|生活|旅遊|攝影|醫學| 科技 #####http://j3234567.pixnet.net/blog####### -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.70.128.56 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1425016847.A.131.html

02/27 19:04, , 1F
command=func是接收一個參數,該參數是一個function
02/27 19:04, 1F

02/27 19:05, , 2F
事件發生時才call該func,cmd=func()變成呼叫func並
02/27 19:05, 2F

02/27 19:06, , 3F
將其回傳值None當作command;
02/27 19:06, 3F

02/27 19:07, , 4F
因print_var回傳None,所以相當於command=None,即事件
02/27 19:07, 4F

02/27 19:08, , 5F
發生時不處理.簡言之,這是因func可視為物件,並傳遞.
02/27 19:08, 5F
文章代碼(AID): #1Ky0WF4n (Python)
文章代碼(AID): #1Ky0WF4n (Python)