MyClass = MyClass(abc)
上面的行与执行此操作相同:
def x():
print 'Hello'
return 'Hello'
x() # outputs Hello
x = x() # Also ouputs 'Hello' (since x() is called)
x() # Error, since x is now 'Hello' (a string), and you are trying to call it.
在 python 中,变量的名称只是指向内存中某个位置的指针。您可以通过将其指向其他东西来自由地将其分配给另一个位置(对象)。事实上,你定义的大多数东西都是这样工作的(比如方法和类)。它们只是名字。
如果您的方法没有返回值(像大多数类__init__
方法一样),那就更奇怪了。在这种情况下,左边是None
,你会得到TypeError: 'NoneType' object is not callable
。像这样:
>>> def x():
... print 'Hello'
...
>>> x()
Hello
>>> x = x()
Hello
>>> x()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not callable
>>> type(x)
<type 'NoneType'>