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

【问题讨论】:

    标签: python oop methods private encapsulation


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      输出:

      Hello, world!
      None
      

      【讨论】:

        猜你喜欢
        • 2016-05-08
        • 2013-01-29
        • 1970-01-01
        • 2012-11-04
        • 2011-03-05
        • 1970-01-01
        • 2011-07-25
        • 2016-04-02
        相关资源
        最近更新 更多