@danielsadovskiy

Считывание экземпляра класса из текстового файла?

class Person:
    def __init__(self,name = "n/a",age=0,adress="none"):
        self.__name = name
        self.__age = age
        self.__adress = adress


inputfile = "human.txt"
outputfile = "persons.txt"
myfile1 = open(inputfile,mode="r")
myfile2 = open(outputfile,mode="w")
for num,line in enumerate(myfile1,1):
    print("Line N:" + str(num) + "-> " + line.strip())
    myfile2.write("Person: " + line)

Для создания экземпляра класса Person нужно Имя,возраст, адрес
как реализовать такую функцию?
я например пишу в файле
Name Surname1: Age1: Adress1:
...
...
Name SurnameX:AgeX: Adress X:
Чтобы у меня создалось Х экземпляров класса?
Помогите пожалуйста)
  • Вопрос задан
  • 434 просмотра
Пригласить эксперта
Ответы на вопрос 2
@anttoon
Python/Django
Если я правильно понял - в итоге создал словарь персон

class Person:
    def __init__(self,name = "n/a",age=0,adress="none"):
        self.__name = name
        self.__age = age
        self.__adress = adress
        
inputfile = "human.txt"
outputfile = "persons.txt"
myfile1 = open(inputfile,mode="r")
# myfile2 = open(outputfile,mode="w")
data = dict()
for num,line in enumerate(myfile1,1):
    text_line = line.split(' ')
    data['person '+ str(num)] = Person(name=text_line[0], age=int(text_line[2]), adress=text_line[3])
print(data)
Ответ написан
Комментировать
@immaculate
Программист-путешественник
Я бы использовал пакет для сериализации, такой как serpy если это реальный, а не учебный проект, и pickle или shelve, если учебный, и если нет требования хранить именно в текстовом виде.

И еще: хотя использование "private" переменных с двумя подчеркиваниями считается хорошим тоном в других ОО языках, но в Python практически не используется, и выглядит очень "unpythonic". 99.9% проектов на Python не используют никакие префиксы для атрибутов класа.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы