我正在阅读《Python 3 面向对象编程》,并对其中一个示例感到有点困惑。这是ch。 3,第 3 页。 78:
class AudioFile:
def __init__(self, filename):
if not filename.endswith(self.ext):
raise Exception("Invalid file format")
self.filename = filename
class MP3File(AudioFile):
ext = "mp3"
def play(self):
print("playing {} as mp3".format(self.filename))
所以MP3File
继承自AudioFile
。父类(super class) AudioFile
如何访问 self.ext
?例如,Java 有抽象类,因此不能保证 AudioFile 一定可以实例化/具有 ext
字段。更重要的是,我认为子类继承了父类(super class)的所有信息,但在另一个方向上没有信息流。
看来我错了...
任何澄清都会很好,
克莱曼
最佳答案
理想情况下,AudioFile
应该是 abc因为它确实定义了字段 (self.ext)。如果您尝试实例化 AudioFile
,您应该会收到属性错误。
我认为你是对的..这个例子只是还不想进入 abc 。
关于python - Python 中的基本多态性混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31862883/