Python封装方法代码输出的困惑

问题描述

    class encap:
          __a = 10
          b=11
          def __abc(self):
              print(self.b)
              print(self.__a)
          def xyz (self):
              # calling private method 
              self.__abc()

    a1= encap()
    print(a1.xyz())

这里 __a 和 __abc 是私有的。所以我在 xyz() 方法调用 __abc() 。获取输出

11
10
None

我了解获得 11 和 10,但为什么我也应该获得 None ?

解决方法

您正在 print 执行 a1.xyz()result,它返回 None(因为 {{1} 中没有 return 语句})。只需调用 encap.xyz 就足以打印您所期望的内容。

,

默认情况下,Python 中的方法如果不返回任何内容则返回 None

您可以通过以下代码验证相同的内容:

def test():
    print('Hello,world!')

print(test())

输出:

Hello,world!
None