从python中的类调用函数

h_u*_*ser 1 python class function

我正在尝试从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) 
Run Code Online (Sandbox Code Playgroud)

我收到TypeError的错误:必须使用JCMT实例作为第一个参数调用unbound方法bs()(改为使用int实例)

有人能告诉我哪里出错了吗?

Tyl*_*ler 5

有一些问题,我发表了评论:

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)
Run Code Online (Sandbox Code Playgroud)

self方法签名中的部分是唯一的.您可以在此答案中阅读更多相关信息.


Mal*_*imi 5

在函数正上方添加一个静态方法装饰器,表示在类上调用的静态函数:

@staticmethod 
Run Code Online (Sandbox Code Playgroud)

问题是你的self参数对应于在函数调用期间隐式传递的实例对象,因此在提供类时会引发错误.您必须删除self参数并使用参数来表示数字参数.

  • 这是正确的方法.最重要的是,我会将参数从**self**重命名为其他内容,以避免与常规实例方法混淆. (2认同)
  • 很可能这应该是一个常规实例方法,而OP只是忘记(或者不知道如何)实例化一个对象. (2认同)