[英]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.