Python中封装方法代码的输出混淆[重复]

Posted

技术标签:

【中文标题】Python中封装方法代码的输出混淆[重复]【英文标题】:Confusion over output of encapsulation method code in Python [duplicate] 【发布时间】:2021-05-04 03:47:30 【问题描述】:
    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 ?

【问题讨论】:

【参考方案1】:

你是printa1.xyz()结果,它返回None(因为encap.xyz 中没有return 语句)。只需调用a1.xyz() 就足以打印您所期望的。

【讨论】:

【参考方案2】:

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

您可以从下面的代码中进行验证:

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

print(test())

输出:

Hello, world!
None

【讨论】:

以上是关于Python中封装方法代码的输出混淆[重复]的主要内容,如果未能解决你的问题,请参考以下文章

python连接mysql与方法的封装

Python中真的没有封装[重复]

理解Python函数和方法

python 11 类与对象

ios 性能优化

day25 多态和封装