2

几天前我看到了这个print add().a线程,我理解(在阅读答案之后)为什么 OP 会出现问题,但我不明白在“添加”函数上使用的点运算符发生了什么: 。 a是 class 的一个元素test,并 add创建 的一个实例test,但是如何a在函数上直接访问?

4

2 回答 2

6

在那篇文章中,该函数add()返回一个test对象。该对象有一个属性a,因此可以使用.运算符访问它。

换句话说,add().a访问 函数调用 结果a的属性,而不是函数对象本身的属性(即)。addadd.a

于 2013-06-24T07:41:48.153 回答
2

add()这会创建一个对象,它没有分配给一个名称(也许这是混淆),然后.a访问(未命名)add()对象的成员。

print只是做它需要做的事情。

这与这样做几乎相同:

foo = add()
print foo.a
del(foo)
于 2013-06-24T07:42:14.853 回答