Python中的多态性

class File(object):
    def __init__(self, filename):
        if os.path.isfile(filename):
            self.filename = filename
            self.file = open(filename, 'rb')
            self.__read()
        else:
            raise Exception('...')

    def __read(self):
        raise NotImplementedError('Abstract method')

class FileA(File):
    def __read(self):
        pass

file = FileA('myfile.a')

# NotImplementedError: Abstract method

我的问题:出了什么问题?如何修复我的代码到FileA使用FileA .__ read()来读取文件而不是File .__ read()? :S

先感谢您.

解决方法:

使用双下划线对属性进行前缀不会使该属性成为私有,它只会使多态变得不可能,因为属性名称会被当前类名称破坏.将其更改为单个下划线前缀.

上一篇:C多态性错误:没有匹配函数用于调用


下一篇:c – 两个不同类的运行时多态性