gpt4 book ai didi

Python 错误 "unbound method must be called"?

转载 作者:太空宇宙 更新时间:2023-11-04 08:49:04 24 4
gpt4 key购买 nike

我开始学习 python 类(class),并想像这样构建一个简单的计算器:

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)

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

最佳答案

您没有创建类的实例:

C = calculator

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

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

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 类是一个美化的命名空间,它是 generally frowned upon .如果您不打算使用一个类来跟踪每个实例的状态,您也可以将所有这些 staticmethod 的顶级函数改为放在一个模块中,并避免必须“解除绑定(bind)”您的方法.

关于Python 错误 "unbound method must be called"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37306536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com