【发布时间】:2014-03-04 02:33:14
【问题描述】:
为什么我不能再次调用该函数?或者,我该怎么做?
假设我有这个功能:
def a(x, y, z):
if x:
return y
else:
return z
我称之为:
print a(3>2, 4, 5)
我得到 4 个。
但是假设我声明了一个与函数同名的变量(错误地):
a=2
现在,如果我尝试这样做:
a=a(3>4, 4, 5)
或:
a(3>4, 4, 5)
我会得到这个错误:“TypeError: 'int' object is not callable”
不能将变量'a'赋给函数吗?
【问题讨论】:
-
好吧,错误解释了自己。您已将
a重新定义为int而不是function;现在,a是一个变量(而不是一个函数);因此后果 -
我不确定你在问什么。你问为什么不能拨号码?
-
不,我只想知道:如果可以在赋值“a=2”之后,有办法让“a”再次指向函数。
-
虽然这对于整天编写 Python 的人来说似乎很明显,但来自 C# 背景的人却很烦人。我可能有一个名为
self.a的“私有”变量,但希望有一个名为a(units='g')的“公共”函数,它将私有变量“a”上的单位转换为调用者想要的任何单位。相反,我发现我需要将我的“公共”函数写为def format_a(units='g'): -
好问题,最后,从答案来看,与其他语言相反,您不能拥有像
def x(self): return self.x这样的getter,您需要以不同的方式命名getter,例如get_x(self)。我来到这里是因为在重构了我的 getter 名称之后,工作代码不再工作了。