功能错误

时间:2016-09-11 00:07:00

标签: python function

当我运行我的代码时,我收到此错误:

<function setDegreesAndMinutes at 0x10e7cf6e0>

我的代码是:

def setDegreesAndMinutes(self, degrees,minutes):

   self.degrees = int(input())

self.minutes = float(input())

 if(not(isinstance(degrees, int))):


raise ValueError("degrees shoule be int")

if(not(isinstance(minutes(int,float)))):

raise ValueError("minutes shoule be int or float")

 x = degrees 

 y = minutes

 return str(x)+'d'+str(y)

returnValue = setDegreesAndMinutes

print returnValue
如果有人知道发生了什么,那将会很棒!

1 个答案:

答案 0 :(得分:2)

这根本不是错误...您打印了功能对象

您永远不会setDegreesAndMinutes作为参数传递给self的函数

此外,通常setDegreesAndMinutes表示您已在类中定义了该方法,因此您需要该类的实例甚至可以调用returnValue = some_class.setDegreesAndMinutes(degrees, minutes)。在这种情况下,您需要input

然后,你真的需要参数吗?您调用degrees, minutes,这意味着您正在提示输入值,因此重新分配您传递给方法的值。如果您确实想要提示该方法的输入,请从(self, degrees, minutes)移除returnValue = some_class.setDegreesAndMinutes(),然后您可以执行class Foo(): def __init__(self, degrees, minutes): self.degrees = degrees self.minutes = minutes degrees = int(input("degrees: ")) if not isinstance(degrees, int): raise ValueError("degrees should be int") minutes = float(input("minutes: ")) if not isinstance(minutes, (int,float)): # I think you had extra parenthesis after minutes raise ValueError("minutes should be int or float") f = Foo(degrees, minutes) print(str(f.degrees) + 'd' + str(f.minutes))

最后,在我看来,在Python中,setter并不是必需的。此外,他们通常不会自行返回值或提示输入。简单 - 只需设置值。

总而言之,我认为你正在寻找像这样的东西

f.degrees = X

如果您需要设置值,请对任何X值执行{{1}},例如