Python错误“必须调用未绑定的方法”?

时间:2016-05-18 17:33:03

标签: python

我开始在python中学习类,并希望构建一个简单的计算器,如下所示:

import math

class calculator:
    def plus(self, num1, num2):
        plus = num1 + num2
        print plus
    def minus(self, num1, num2):
        minus = num1 - num2
        print minus
    def power(self, num1, num2):
        power = math.pow(num1, num2)
        return power

C = calculator

num1 = raw_input("1st num > ")
num2 = raw_input("2nd num > ")

C.minus(num1, num2)

但由于某些原因,当我运行脚本时,它向我显示一个错误,指出“必须使用计算器实例作为第一个参数调用未绑定方法减去()(而不是使用str实例)”。我真的不明白这是什么意思,但我确实尝试使用脚本而没有任何改变。那么我在这里错过了什么?

1 个答案:

答案 0 :(得分:5)

您没有创建班级的实例

C = calculator

C现在只是对该类的引用,使C.minus成为一个未绑定的方法。

通过调用您的类来创建实例:

C = calculator()

或者,将所有功能@staticmethod设为self,删除其object参数(但在这种情况下继承class calculator(object): @staticmethod def plus(num1, num2): plus = num1 + num2 print plus @staticmethod def minus(num1, num2): minus = num1 - num2 print minus @staticmethod def power(num1, num2): power = math.pow(num1, num2) return power ):

calculator

现在,您的staticmethod类是一个荣耀的命名空间,generally frowned upon。如果您不打算使用类来跟踪每个实例的状态,那么您也可以在模块中创建所有compile ('org.seleniumhq.selenium:selenium-server:2.48.2'){ exclude 'asm' } 顶级函数,并避免必须“取消绑定”您的方法。