Python “鸭子类型”的问题

class F1:
    pass

class S1(F1):

    def show(self):
        print 'S1.show'

class S2(F1):

    def show(self):
        print 'S2.show'

def Func(obj):
    print obj.show()

s1_obj = S1()
Func(s1_obj) 

s2_obj = S2()
Func(s2_obj)

输出结果是:
S1.show
None
S2.show
None

为什么会有“none”呢?

阅读 2.8k
3 个回答

python里面的函数,如果没有return的话,就会默认return None,你的代码中的show()都是没有return语句,因此obj.show()这个函数执行的时候,就会返回None, 然后你在Func中print的时候i, 就会打印None了。如果想不要的话,直接这样就好了啊

def Func(obj):
    obj.show() #不要print

因为show()返回值为none
print show()就输出none

你的Func里面,不要print,直接obj.show()。 show函数没有返回值,你非要print一个,当然出None了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进