我有一个类和一个函数试图更新和返回这个类的实例:
class Foo:
def __init__(self):
self.datum = 'a'
def update(self):
self.datum = 'b' if self.datum == 'a' else 'a'
def updater(foo_obj):
return( foo_obj.update() )但是,调用updater()会返回None,而不是类Foo的实例。为什么会这样呢?为了达到预期的结果,我可以改变什么?
type(updater(Foo())) #NoneType发布于 2016-07-14 17:53:19
更新方法更新程序。
def updater(foo_obj):
foo_obj.update()
return( foo_obj )或类函数中的return self:
def update(self):
self.datum = 'b' if self.datum == 'a' else 'a'
return self发布于 2016-07-14 17:51:34
update方法不返回任何内容,这在Python中意味着它隐式地返回None。如果您希望它有一个有意义的返回值,您必须显式地这样做。例如:
def update(self):
self.datum = 'b' if self.datum == 'a' else 'a'
return self.datum发布于 2016-07-14 17:54:34
如果您希望update返回Foo类的实例,则必须使用返回语句显式地让它这样做,否则它将隐式返回None (也就是说,它是一个空方法,尽管Python没有使用这些术语,因为鸭子类型)。这样做:
def update(self):
self.datum = 'b' if self.datum == 'a' else 'a'
return self如果不希望类这样做,也可以在Foo中返回updater对象,如下所示:
def updater(foo_obj):
foo_obj.update()
return foo_obj如果您只想返回self.datum,而不是返回整个对象,那么可以这样做:
def update(self):
self.datum = 'b' if self.datum == 'a' else 'a'
return self.datum或类似的:
def updater(foo_obj):
foo_obj.update()
return foo_obj.datumhttps://stackoverflow.com/questions/38380936
复制相似问题