• 通过继承解决代码重用的问题


    通过继承解决代码重用的问题

    Queue队列 : 先进先出.

    class Queue:

        def __init__(self):

            self.l = []

        def put(self,item):

            self.l.append(item)

        def get(self):

            return self.l.pop(0) #从头开始弹出。

    Stack堆栈:先进后出。

    class Stack:

        def __init__(self):

            self.l = []

        def put(self,item):

            self.l.append(item)

        def get(self):

            return self.l.pop()

    假设你希望一个类的多个对象之间 的某个属性 是各自的属性,而不是共同的属性。这个时候我们要把变量存储在对象的命名空间中,不能建立静态变量,

    建立静态变量是所有的对象共同使用一个变量.

    # 方法一

    # class Foo:

    #     def __init__(self):

    #         self.l = []

    #     def put(self, item):

    #         self.l.append(item)

    # class Queue(Foo):

    #     def get(self):

    #         return self.l.pop(0)

    # class Stack(Foo):

    #     def get(self):

    #         return self.l.pop()

    # 方法二:

    # class Foo:

    #     def __init__(self):

    #         self.l = []

    #     def put(self,item):

    #         self.l.append(item)

    #     def get(self):

    #         return self.l.pop() if self.index else self.l.pop(0)

    # class Queue(Foo):

    #     def __init__(self):

    #         self.index = 0

    #         Foo.__init__(self)

    # class Stack(Foo):

    #     def __init__(self):

    #         self.index = 1

    #         Foo.__init__(self)

    # 方法三

    class Foo:

        def __init__(self):

            self.l = []

        def put(self, item):

            self.l.append(item)

        def get(self):

            return self.l.pop()

    class Queue(Foo):

        def get(self):

            return self.l.pop(0)

    class Stack(Foo):pass

    Mypickle

    import pickle

    class Mypickle:

        def __init__(self,path):

            self.file = path

        def dump(self,obj):

            with open(self.file, 'ab') as f:

                pickle.dump(obj, f)

        #一种方法:

        # def load(self):

        #     with open(self.file,'rb') as f:

        #         while True:

        #             try:

        #                 yield pickle.load(f)

        #             except EOFError:

        #                 break

        #第二种方法:易理解,但如果文件过大,所有的值都要返回来,占据的空间就大。

        def load(self):

            l = []

            with open(self.file,'rb') as f:

                while True:

                    try:

                        l.append(pickle.load(f))

                    except EOFError:

                        break

            return l

    # pic = Mypickle('pickle_file')

    # s1 = Stack()

    # s2 = Stack()

    # s1.put(123)

    # s1.put(456)

    # pic.dump(s1)

    # s2 = Stack()

    # s2.put('aaa')

    # s2.put(123)

    # s2.put(456)

    # pic.dump(s2)

     for i in pic.load():

         print(i.l)

  • 相关阅读:
    Git 分支开发规范
    小程序技术调研
    弹性布局
    vue 自定义指令的魅力
    记一次基于 mpvue 的小程序开发及上线实战
    mpvue学习笔记-之微信小程序数据请求封装
    微信小程序开发框架 Wepy 的使用
    Hbuilder 开发微信小程序的代码高亮
    luogu3807 【模板】 卢卡斯定理
    luogu1955 [NOI2015] 程序自动分析
  • 原文地址:https://www.cnblogs.com/qqq789001/p/13391645.html
Copyright © 2020-2023  润新知