根据使用Python编程介绍 by Liang
class(superclass):
授予您访问超级
的权限super().__init__()
实例化超类,以便您可以访问其数据字段和方法。
这似乎不正确;在下面的代码中,我使用第一个关键字class(superclass)
访问超类,但从不使用 super().__ init __()启动它,但我仍然可以完全访问所有方法。
如果只是扩展父类使我能够访问它的方法,那么调用父类构造函数有什么意义呢?
参考:使用Python编程简介
CODE:
class GeometricObject:
def __init__(self,color = "green",filled = True):
self.__color = color
self.__filled = filled
def getColor(self):
return self.__color
def setColor(self, color):
self.__color = color
def isFilled(self):
return self.__filled
def setFilled(self,filled):
self.__filled = filled
def __str__(self):
return "Color: " + self.__color + \
" and filled: " + str(self.__filled)
class square(GeometricObject):
def __init__(self,width,height):
self.__width = width
self.__height = height
def getHeight(self):
return self.__height
def getWidth(self):
return self.__width
def setHeight(self,height):
self.__height = height
def setWidth(self,width):
self.__width = width
答案 0 :(得分:4)
我希望这些代码不是来自Python书籍的任何介绍:它非常非Pythonic。
但问题的答案是,扩展可让您访问方法,但不会在超类__init__
中执行任何设置。在您的示例中,square
的实例可以访问getColor
方法,但实际调用它会产生错误,因为您从未运行GeometricObject.__init__
来设置self.__color
的值首先。