簡體   English   中英

從python中的類調用函數

[英]Calling a function from a class in python

我正在嘗試從python中的類調用函數。 這是我的代碼:

class JCMT:
    def be(self):
       if self > 330000:
         return 0.64
       else:
         return 0.69
    def bs(self):
       if self > 330000:
         return 14
       else:
         return 20 

f = 220258

print JCMT.bs(f) 

我收到TypeError錯誤:必須以JCMT實例作為第一個參數來調用未綁定方法bs()(取而代之的是int實例)

有人可以告訴我我要去哪里了嗎?

有一些問題,我用評論解決了它們:

class JCMT:

    # Add parameter
    def bs(self, n):
       if n > 330000:
         return 14
       else:
         return 20

f = 220258

# Make a new instance
j = JCMT()

# Call now, and pass variable
print j.bs(f)

方法簽名中的self部分是唯一的。 您可以在此答案中了解更多信息。

在函數上方添加一個靜態方法裝飾器,以表示在類上調用的靜態函數:

@staticmethod 

問題是您的自我參數對應於在函數調用期間隱式傳遞的實例對象,因此在提供類時會引發錯誤。 您必須刪除self參數,並使用一個參數表示數字參數。

盡管答案中已經提供了@staticmethod裝飾器,但仍可以解決該特定問題,如果將來您希望使用class方法並保留self,您也可以使用@classmethod裝飾器直接調用該方法,而無需先實例化該類。

class JCMT:
    @classmethod
    def be(self, n):
        if n > 330000:
            return 0.64
        else:
            return 0.69
    @classmethod
    def bs(self, n):
        if n > 330000:
            return 14
        else:
            return 20 

f = 220258

print JCMT.bs(f)
20

暫無
暫無

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

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