【问题标题】:array contains NONE [duplicate]数组包含 NONE [重复]
【发布时间】:2021-02-19 07:57:16
【问题描述】:

我是 python 新手,我创建了以下代码来理解继承的一些概念。但是,方法 print(x.showBaseListContents()) 应该只显示列表的内容,但是 如下图所示,我收到了 NONE。 当我收到 NONE 时请告诉我

派生类

#from BaseClass import BaseClass
from BaseClass import BaseClass

class DerivedClass(BaseClass):

    def __init__(self, val1,val2, val3):
        BaseClass.__init__(self, val1,val2,val3)
        self.__baseList = []
        self.__val1 = val1
        self.__val2 = val2
        self.__val3 = val3

x = DerivedClass(10,20,30)
x.addValuesToBaseList()
s = x.getBaseListLength()
print(s)
print(x.showBaseListContents())

基类

class BaseClass:        

    baseClassAttribute = 10

    def __init__(self, val1,val2, val3):
        self.__baseList = []
        self.__val1 = val1
        self.__val2 = val2
        self.__val3 = val3

    def getVal1(self):
        return self.__val1
    
    def getVal2(self):
        return self.__val2

    def getVal3(self):
        return self.__val3

    def addValuesToBaseList(self):
        self.__baseList.append(self.__val1)
        self.__baseList.append(self.__val2)
        self.__baseList.append(self.__val3)

    def getBaseListLength(self) :
        return len(self.__baseList)

    def showBaseListContents(self):
        for i in self.__baseList:
            print(i)

输出

3
10
20
30
None

【问题讨论】:

  • 请注意,诸如__val2 之类的前导双下划线名称会触发名称修改,这会阻止除类本身之外的任何内容的直接访问。这与private/protected/public 方案中的private 非常相似,通常不是你想要的。例如,DerivedClass.__init__ 中的 self.__val1 = val1 等完全没有意义,因为它们创建了没有代码实际访问的重复属性。

标签: python arrays python-3.x inheritance


【解决方案1】:

这是因为你没有从方法showBaseListContents()返回任何东西,默认返回的值是None

 out = x.showBaseListContents() # out will get None
 print(out)

对于上述代码块,我们将输出打印为None,因为showBaseListContents() 不返回任何内容。

【讨论】:

  • 是的,它不返回任何内容,但会打印值?!它可以返回 void 以避免此类错误吗??
  • Python 中没有 return void 这样的东西。您可以返回None,但这类似于C/C++ 中的NULL。理想情况下,如果你不返回任何东西,就不要获取返回值。因此,对于您的情况,您只需使用 x.showBaseListContents() 而不是 print(x.showBaseListContents())
猜你喜欢
  • 1970-01-01
  • 2022-01-21
  • 2011-11-04
  • 1970-01-01
  • 2019-08-28
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
相关资源
最近更新 更多