我开始在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实例)”。我真的不明白这是什么意思,但我确实尝试使用脚本而没有任何改变。那么我在这里错过了什么?
答案 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'
}
顶级函数,并避免必须“取消绑定”您的方法。