我曾经以维护编译器为生,但这个让我迷惑不解。
看起来如果你创建一个类并给它一个方法,你应该能够实例化一个实例并同时做一个简单的方法。以下两种方式看起来应该做同样的事情,但不要:
class foo(object) :
def __init__(self, val) :
self.val = val
def set_new(self, new) :
self.val = new
a = foo(2).set_new(3)
print a
>>> None
a = foo(2)
s.set_new(3)
>>> ..instance at ox7fe2...
如果我设计它,调用a = foo(2).set_new(3)
将具有创建对象和使用构造函数的主要操作; .set_new()
是一项辅助任务。
如果方法返回' self'看起来一切正常,但这意味着当它被称为独立方法时,该方法无法返回自己的有用结果(如成功代码或其他一些)。
或许在set_new()
内知道它是一种嵌套的方式。或者'链接' call - 尽管仍然使得返回值在call到call之间不一致。
答案 0 :(得分:0)
这很简单。在第一次通话中,有两件事正在发生。 foo(2)
将创建实例,然后.set_new(3)
会将值设置为3.由于此处将上一个操作的输出分配给a
,问题是.set_new()
不返回任何内容(None
),因此a
将为None
。只需在self
中返回set_new()
,然后链接的调用就可以了。