fork download
  1. import pickle
  2. import pickletools
  3.  
  4. class Class:
  5. def __init__(self, a, b, c):
  6. self.a = a
  7. self.b = b
  8. self.c = c
  9.  
  10.  
  11. class ClassSlots:
  12. __slots__ = ["a", "b", "c"]
  13.  
  14. def __init__(self, a, b, c):
  15. self.a = a
  16. self.b = b
  17. self.c = c
  18.  
  19. pickletools.dis(pickle.dumps(Class(1, 2, 3)))
  20. print('-------------')
  21. pickletools.dis(pickle.dumps(ClassSlots(1, 2, 3)))
  22. print('-------------')
  23. pickletools.dis(pickletools.optimize(pickle.dumps(ClassSlots(1, 2, 3))))
Success #stdin #stdout 0.04s 10056KB
stdin
Standard input is empty
stdout
    0: \x80 PROTO      4
    2: \x95 FRAME      48
   11: \x8c SHORT_BINUNICODE '__main__'
   21: \x94 MEMOIZE    (as 0)
   22: \x8c SHORT_BINUNICODE 'Class'
   29: \x94 MEMOIZE    (as 1)
   30: \x93 STACK_GLOBAL
   31: \x94 MEMOIZE    (as 2)
   32: )    EMPTY_TUPLE
   33: \x81 NEWOBJ
   34: \x94 MEMOIZE    (as 3)
   35: }    EMPTY_DICT
   36: \x94 MEMOIZE    (as 4)
   37: (    MARK
   38: \x8c     SHORT_BINUNICODE 'a'
   41: \x94     MEMOIZE    (as 5)
   42: K        BININT1    1
   44: \x8c     SHORT_BINUNICODE 'b'
   47: \x94     MEMOIZE    (as 6)
   48: K        BININT1    2
   50: \x8c     SHORT_BINUNICODE 'c'
   53: \x94     MEMOIZE    (as 7)
   54: K        BININT1    3
   56: u        SETITEMS   (MARK at 37)
   57: b    BUILD
   58: .    STOP
highest protocol among opcodes = 4
-------------
    0: \x80 PROTO      4
    2: \x95 FRAME      56
   11: \x8c SHORT_BINUNICODE '__main__'
   21: \x94 MEMOIZE    (as 0)
   22: \x8c SHORT_BINUNICODE 'ClassSlots'
   34: \x94 MEMOIZE    (as 1)
   35: \x93 STACK_GLOBAL
   36: \x94 MEMOIZE    (as 2)
   37: )    EMPTY_TUPLE
   38: \x81 NEWOBJ
   39: \x94 MEMOIZE    (as 3)
   40: N    NONE
   41: }    EMPTY_DICT
   42: \x94 MEMOIZE    (as 4)
   43: (    MARK
   44: \x8c     SHORT_BINUNICODE 'a'
   47: \x94     MEMOIZE    (as 5)
   48: K        BININT1    1
   50: \x8c     SHORT_BINUNICODE 'b'
   53: \x94     MEMOIZE    (as 6)
   54: K        BININT1    2
   56: \x8c     SHORT_BINUNICODE 'c'
   59: \x94     MEMOIZE    (as 7)
   60: K        BININT1    3
   62: u        SETITEMS   (MARK at 43)
   63: \x86 TUPLE2
   64: \x94 MEMOIZE    (as 8)
   65: b    BUILD
   66: .    STOP
highest protocol among opcodes = 4
-------------
    0: \x80 PROTO      4
    2: \x95 FRAME      47
   11: \x8c SHORT_BINUNICODE '__main__'
   21: \x8c SHORT_BINUNICODE 'ClassSlots'
   33: \x93 STACK_GLOBAL
   34: )    EMPTY_TUPLE
   35: \x81 NEWOBJ
   36: N    NONE
   37: }    EMPTY_DICT
   38: (    MARK
   39: \x8c     SHORT_BINUNICODE 'a'
   42: K        BININT1    1
   44: \x8c     SHORT_BINUNICODE 'b'
   47: K        BININT1    2
   49: \x8c     SHORT_BINUNICODE 'c'
   52: K        BININT1    3
   54: u        SETITEMS   (MARK at 38)
   55: \x86 TUPLE2
   56: b    BUILD
   57: .    STOP
highest protocol among opcodes = 4