Je voulais enregistrer l'instance entière, j'ai donc utilisé pickle, mais les variables membres du tableau (__hoge dans le code) n'ont pas pu être enregistrées correctement. Cela ne fonctionne pas avec sample1.py et cela fonctionne avec sample2.py. Je ne sais pas pourquoi, mais il semble que l'ajout et l'affectation sont différents.
Si vous connaissez les détails, veuillez commenter.
sample1.py
# -*- coding: utf-8 -*-
import os
import pickle
class Test():
    __hoge = []
    __foo = ""
    def __init__(self):
        self.__hoge.append("hoge1")
        self.__hoge.append("hoge2")
        self.__hoge.append("hoge3")
        self.__foo = "foo"
        return
    def print(self):
        print(self.__hoge)
        print(self.__foo)
        return
if __name__ == '__main__':
    pickle_path = 'dataset.pkl'
    if not os.path.exists(pickle_path):
        # initialize class and save pickle
        test = Test()
        with open(pickle_path, 'wb') as output:
            pickle.dump(test, output)
        test.print()
        # console:
        # ['hoge1', 'hoge2', 'hoge3']
        # foo
    else:
        # load pickle
        with open(pickle_path, 'rb') as output:
            test = pickle.load(output)
        test.print()
        # console:
        # []     <---- why?
        # foo
sample2.py
# -*- coding: utf-8 -*-
import os
import pickle
class Test():
    __foo = ""
    __hoge = []
    def __init__(self):
        hoge = []
        hoge.append("hoge1")
        hoge.append("hoge2")
        hoge.append("hoge3")
        self.__hoge = hoge
        self.__foo = "foo"
        return
    def print(self):
        print(self.__hoge)
        print(self.__foo)
        return
if __name__ == '__main__':
    pickle_path = 'dataset.pkl'
    if not os.path.exists(pickle_path):
        # initialize class and save pickle
        test = Test()
        with open(pickle_path, 'wb') as output:
            pickle.dump(test, output)
        test.print()
        # console:
        # ['hoge1', 'hoge2', 'hoge3']
        # foo
    else:
        # load pickle
        with open(pickle_path, 'rb') as output:
            test = pickle.load(output)
        test.print()
        # console:
        # ['hoge1', 'hoge2', 'hoge3']     <---- great!
        # foo