2012-03-18 62 views
0
class Adder: 

    result = 0 

    def __init__(self, number1, number2): 
     self.result = int(number1) + int(number2) 

    def giveResult(self): 
     return str(self.result) 

class AdderGui: 

    def __init__(self): 
     self.builder = gtk.Builder() 
     self.builder.add_from_file("Adder.glade") 

    def add(self, widget): 
     entry1 = self.builder.get_object ("entry1") 
     entry2 = self.builder.get_object ("entry2") 
     try: 
      thistime = adder(entry1.get_text(), entry2.get_text()) 
     except ValueError: 
      self.builder.get_object("hboxWarning").show() 
      self.builder.get_object("entryResult").set_text("ERROR") 
      return 0 

    def quit(self, widget): 
     sys.exit(0) 

我在這裏不明白這個變量如何獲得加法值。由於初始化總是返回沒有它不應該得到加法的值。python return in _init_構造函數

+0

值得注意的是,僅用於訪問變量(''giveResult()'')的方法在Python中是不好的做法。查看''property''裝飾器/內置。 – 2012-03-18 13:58:11

+0

更值得注意的是,在Python 2.x中,您應該始終繼承「object」類的類,或者受到細微的錯誤影響。 (你從沒有繼承,這使得它們成爲舊式類) – jsbueno 2012-03-18 14:36:35

回答

3

它沒有。 thistime被分配了一個Adder對象。要獲得結果,您需要調用其giveResult()方法。例如:

result = thistime.giveResult() 

順便說一句,類名應按照慣例大寫。另外,result = 0在類定義中似乎沒有多大意義。對象變量self.result分配在__init__()中。