簡體   English   中英

缺少 1 個必需的位置參數:'y'

[英]Missing 1 required positional argument: 'y'

我創建了一個 Python class:

class calculator:
    
    def addition(self,x,y):
        added = x + y
        print(added)
        
    def subtraction(self,x,y):
        sub = x - y
        print(sub)

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

    def division(self,x,y):
        div = x / y
        print(div)

現在,當我像這樣調用 function 時:

calculator.addition(2,3)

我收到一個錯誤:

add() 缺少 1 個必需的位置參數:'y'

問題是什么? 什么可能是解決方案,以便我可以將其稱為addition(2,3)

Python 的類具有三種類型的方法:

  1. 實例方法

實例方法必須將實例 object 作為方法的第一個參數傳遞給self ,例如:

class calculator:
    
    def addition(self, x, y):
        added = x + y
        print(added)

c = calculator()        
c.addition(2, 3)
  1. Class 方法

class 方法使用classmethod裝飾器,並且必須通過 class object 作為方法的第一個參數,即cls ,如:

class calculator:
    
    @classmethod
    def addition(cls, x, y):
        added = x + y
        print(added)
    
calculator.addition(2, 3)
  1. Static方法

static方法沒關系,加個staticmethod裝飾器就好了,比如:

class calculator:
    
    @staticmethod
    def addition(x, y):
        added = x + y
        print(added)
    
calculator.addition(2, 3)

因此,如果您只想使用 class object (如calculator.addition(2, 3)調用,最后兩種方法可能是您的答案。

您必須通過實際聲明此 class 的實例來傳入self變量,如下所示:

myCalculator = calculator()

myCalculator.addition(2,3)

Output 應該是: 5

請先創建 class 的實例:

calculator_instance = calculator()

然后,您可以調用 function 作為calculator_instance.addition(2,3)

  1. 您應該為 class 使用名稱“計算器”
  2. 當您調用 function Caculator.addition 時,您需要 3 個 args (self, x, y) 但您給出了 2
  3. 你應該寫你的 function «addition(self,x,y):» 像這樣 «addition(self, x: int, y: int):»

如果您只想添加 function,則不要將其寫為 class 方法,而是將其寫為 function。 如果你需要寫 «calculator.addition(2,3)» 首先做calculator = Calculator()

你只需要刪除自己。 當你有 __init __ function 時將使用 Self

class calculator:
    
    def addition(x,y):
        added = x + y
        print(added)
        
    def subtraction(x,y):
        sub = x - y
        print(sub)

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

    def division(x,y):
        div = x / y
        print(div)

calculator.addition(2,3)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM