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.
在蟒变量的名称仅仅是一个指针,指向存储器中的位置。您可以通过指向其他位置将其自由分配给其他位置(对象)。事实上,你定义的大多数东西都是这样工作的(比如方法和类)。他们只是名字。
它更奇怪,如果你的方法没有返回值(像大多数类__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'>
你会得到什么异常? –