实例化的行为不明确加上方法

时间:2017-07-31 13:30:49

标签: python

我曾经以维护编译器为生,但这个让我迷惑不解。

看起来如果你创建一个类并给它一个方法,你应该能够实例化一个实例并同时做一个简单的方法。以下两种方式看起来应该做同样的事情,但不要:

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之间不一致。

1 个答案:

答案 0 :(得分:0)

这很简单。在第一次通话中,有两件事正在发生。 foo(2)将创建实例,然后.set_new(3)会将值设置为3.由于此处将上一个操作的输出分配给a,问题是.set_new()不返回任何内容(None),因此a将为None。只需在self中返回set_new(),然后链接的调用就可以了。