2016-11-19 60 views
0

我得到一個 類型錯誤:不受約束的方法MULT()必須與calculadora實例作爲第一個參數來調用(有INT實例,而不是)上運行我的Python文件時類型錯誤:不受約束的方法MULT()必須與calculadora實例作爲第一個參數來調用(得不是int實例)

from __future__ import print_function 

class calculadora: 


    def suma(x,y): 
     added = x + y 
     print(added) 

    def resta(x,y): 
     sub = x - y 
     print(sub) 

    def mult(x,y): 
     multi = x * y 
     print(multi) 


calculadora.mult(3,5) 
+0

你打算在這裏嘗試創建staticmethods,還是你想的實例方法? – idjaw

+0

@idjaw我想要的實例方法 –

回答

1

如果您要訪問的方法爲靜態方法(accesing沒有CLAS實例方法),你需要@staticmethod來裝點他們:

class calculadora: 
    @staticmethod 
    def suma(x, y): 
     added = x + y 
     print(added) 

    @staticmethod 
    def resta(x, y): 
     sub = x - y 
     print(sub) 

    @staticmethod 
    def mult(x, y): 
     multi = x * y 
     print(multi) 

如果你的意思是實例方法,你需要先創建實例。並需要修改方法的簽名,包括self作爲第一個參數:

class calculadora: 
    def suma(self, x, y): # not `self`, refering class instance 
     added = x + y 
     print(added) 

    def resta(self, x, y): 
     sub = x - y 
     print(sub) 

    def mult(self, x, y): 
     multi = x * y 
     print(multi) 


c = calculadora() # Create instance 
c.mult(3,5) # Access the method through instance, (not class) 
+1

我們不知道這一點。如果他們實際上需要靜態方法或實例方法,最好是澄清一下。 – idjaw

+1

@idjaw,代碼沒有指定'self.',並且根本不使用實例變量。 OP也不創建任何實例;所以我認爲這都是靜態方法。無論如何,我也會添加實例方法版本。 – falsetru

+1

這是真的。它可以用任何一種方式來說實話:P – idjaw

相關問題