【发布时间】: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