Как правильно хранить «пользовательские» объекты в python? - PullRequest
0 голосов
/ 18 мая 2019

У меня есть случай, когда программа принимает импульс от своего пользователя, а затем создает некоторые объекты на основе ввода.

class Dog():
    def __init__(self, name):
        self.name = name

def dogmaker():
    name = input()
    dog = Dog(name)

if __name__ == '__main__':
    dogmaker()

Это должно создать экземпляр класса Dog () с собакойобъект с именем, выбранным пользователем.

Как я могу использовать полки / засолки, чтобы хранить где-то созданный пользователем объект и иметь его при следующем запуске моей программы?

Какой из них лучшеиспользовать между рассолом и полками и в чем разница?

1 Ответ

1 голос
/ 18 мая 2019

вы можете использовать pickle для сохранения практически любого типа данных Python на диск:

import pickle
class Dog():
    def __init__(self, name):
        self.name = name

# save dogs to file
def save_dogs(dog_list):
    with open('myfile', 'wb') as f:
        pickle.dump(dog_list, f)

# load dogs from file
def load_dogs():
    with open('myfile', 'rb') as f:
        return pickle.load(f) 

dog1 = Dog('shewawa')
dog2 = Dog('Bulldog')

# make a list that holds your dogs
dogs = [dog1, dog2]

save_dogs(dogs) 
mydogs = load_dogs()

# you have a loaded list of dogs and can iterate over or say dog1 = dogs[0] and so on
for dog in mydogs:
    print(dog.name)

выход:

shewawa
Bulldog
...