【摘】python和它的内置类型子类化

python和它的内置类型子类化

看个好玩的东西

class Folder(list):

    def __init__(self, name):

        self.name = name

    def dir(self, nesting = 0):

        offset = '  ' * nesting
        print('%s%s/' % (offset, self.name))

        for element in self:
            if hasattr(element, 'dir'):
                element.dir(nesting + 1)
            else:
                print('%s  %s' % (offset, element))


if __name__ == '__main__':

    tree = Folder('porject')
    tree.append('README.md')

    src = Folder('src')
    src.append('script.py')

    tree.append(src)
    tree.dir()

它的结果是

porject/
  README.md
  src/
    script.py

内置类型覆盖了大部分使用场景
如果打算创建一个与序列或映射类似的新类,应考虑其特性并查看现有的内置类型。
除了基本内置类型,collections模块还额外提供了许多有用的容器。大部分情况下最终会使用它们。

摘自 《Python高级编程》

posted @ 2019-01-24 19:44  白应非  阅读(145)  评论(0编辑  收藏  举报