Python Forum
saving (in text or binary) an object under a defined class
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
saving (in text or binary) an object under a defined class
#1
Hi, I don't know if my topic makes any sense but what I'm trying to say is, I'm made a class
class Users:
    def __init__(self, fname, lname, bday, username, password, domain='gmail'):
        self.fn = fname
        self.ln = lname
        self.bd = bday
        self.un = username
        self.pw = password
        self.dom = domain

    def fullname(self):
        return(self.fn + ' ' + self.ln)

    def email(self):
        return(self.fn.lower() + '_' + self.ln.lower() + '@' + self.dom + '.com')

    def show_info(self):
        return(
            f''' The following is the info for user {self.un}:
    First Name: {self.fn}
    Last Name: {self.ln}
    Birthdate: {self.bd}
    Email: {self.fn}_{self.ln}@{self.dom}.com
            ''')
and I created an object under that class
user_1 = Users('Adam', 'Smith', '1/1/2000', 'adam1100', 1234)
As you see, my class is like a personal info sheet. My question is, how can I save this particular object to an external file (like a text or a binary file) which could be loaded as is (remain as a "User" class) the next time I ran the code. Like the external file should become a database or something.

I tried doing this
def save_info(self):
        x = f"'{self.fn}', '{self.ln}', '{self.bd}', '{self.un}', '{self.pw}', '{self.dom}'"
        with open('users', 'r+') as data:
            data.write(x)
which is a function under the class I made, yes it does save in a file however, whenever I'm reading the file using this
@staticmethod
    def load_info():
        with open('users', 'r+') as data:
             return(data.read())
and running this outside the code block of the class
z = Users.load_info()
user_1 = Users(z)
its returning an error
Error:
Traceback (most recent call last): File "c:\Users\***\Desktop\Python\Test\test.py", line 39, in <module> user_1 = Users(z) TypeError: __init__() missing 4 required positional arguments: 'lname', 'bday', 'username', and 'password'
I think what the interpreter is telling is that it can't recognize the output from the text file as a valid __init__ of the class (since it is telling me that the code does not have any positional arguments)

I tried printing the variable z and it shows what I'm expecting
Output:
'Adam', 'Smith', '1/1/2000', 'adam1100', '1234', 'gmail'
Can you please enlighten me. I'm confused with creating classed that's why I'm focusing on it. Thanks.

P.S.
If my question is kinda noob I'm so sorry since I'm really a beginner with programming in general so please bear with me. Thank you.
Reply


Messages In This Thread
saving (in text or binary) an object under a defined class - by cai0824 - May-09-2019, 06:58 AM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Printing out incidence values for Class Object SquderDragon 3 355 Apr-01-2024, 07:52 AM
Last Post: SquderDragon
  error in class: TypeError: 'str' object is not callable akbarza 2 584 Dec-30-2023, 04:35 PM
Last Post: deanhystad
  "Name is not defined" when running a class lil_e 6 4,211 Jan-12-2023, 11:57 PM
Last Post: lil_e
  Saving the print result in a text file Calli 8 1,917 Sep-25-2022, 06:38 PM
Last Post: snippsat
  python update binary object (override delivered Object properties) pierre38 4 1,828 May-19-2022, 07:52 AM
Last Post: pierre38
  saving and loading text from the clipboard with python program MaartenRo 2 1,696 Jan-22-2022, 05:04 AM
Last Post: MaartenRo
  Why built in functions are defined as class? quazirfan 5 2,905 Oct-23-2021, 01:20 PM
Last Post: Gribouillis
Exclamation win32com: How to pass a reference object into a COM server class Alfalfa 3 4,964 Jul-26-2021, 06:25 PM
Last Post: Alfalfa
  How to convert binary data into text? ZYSIA 3 2,688 Jul-16-2021, 04:18 PM
Last Post: deanhystad
  Extracting the text between each "i class" knight2000 4 2,390 May-26-2021, 09:55 AM
Last Post: knight2000

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020