当我运行我的代码时,我收到此错误:
<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
如果有人知道发生了什么,那将会很棒!
答案 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}},例如