我有一个类和一个试图更新并返回此类实例的函数:
updater()
但是调用None
会返回Foo
而不是类type(updater(Foo())) #NoneType
的实例。为什么是这样?我可以改变什么来获得理想的结果?
{{1}}
答案 0 :(得分:1)
您的update
方法不返回任何内容,在Python中意味着它隐式返回None
。如果您希望它具有有意义的返回值,则必须明确地这样做。 E.g:
def update(self):
self.datum = 'b' if self.datum == 'a' else 'a'
return self.datum
答案 1 :(得分:1)
更新方法更新程序。
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
答案 2 :(得分:0)
如果您希望update
返回Foo
类的实例,则必须使用return语句明确地返回它,否则它将隐式返回None
(即它是一个void方法,即使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.datum