简体   繁体   中英

How to implement string in python class?

I'm working on a problem called "Employee Class" and mostly thru it but it's not printing what I want. This is my program:

from EmployeeDefinition import *

def main():
   
    emplo1 = Employee('Susan Meyers', '47899',
                        'Accounting', 'Vice President')
    emplo2 = Employee('Mark Jones', '39119',
                        'IT', 'Programmer')
    emplo3 = Employee('Joy Rogers', '81774',
                        'Manufacturing', 'Engineer')

    print(f"Employee 1:{emplo1}\n")
    print(f"Employee 2:{emplo2}\n")
    print(f"Employee 3:{emplo3}\n")

if __name__ == '__main__':
    main()

and this is the file with my class in it:

class Employee:
    __empName = "-na-"
    __idNumber = '0'
    __department = "-na-"
    __title = "-na-"
    
    def __init__(self, inp_empName, inp_idNumber, inp_dept, inp_title):
        self.__empName = inp_empName
        self.__idNumber = inp_idNumber
        self.__department = inp_dept
        self.__title = inp_title

    def setEmpName(self, inp_empName):
        self.__empName = inp_empName

    def setIdNumber(self, inp_idNumber):
        self.__idNumber = inp_idNumber

    def setDepartment(self, inp_dept):
        self.__department = inp_dept

    def setTitle(self, inp_title):
        self.__title = inp_title
    
    def getEmpName(self):
        return self.__empName
        
    def getIdNumber(self):
        return self.__idNumber
        
    def getDepartment(self):
        return self.__department

    def getTitle(self):
        return self.__title

I know I need to implement a string but I'm stuck.

You need to define the __str__ method in your employee class. This tells the compiler how to output your class as a string instead of the object hash.

class Employee:
    def __str__(self):
        return f"{self.__empName}, {self.__idNumber}, {self.__department}, {self.__title}"

The double underscore you're using in your class usually denotes that it's a private variable/attribute. Example:

def __init__(self, inp_empName, inp_idNumber, inp_dept, inp_title):
        self.empName = inp_empName
        self.idNumber = inp_idNumber
        self.department = inp_dept
        self.title = inp_title

If you simply remove those underscores, you can call the string like this:

print(f"Employee 1:{emplo1.empName}\n")

If you want to call those attributes outside of the class, then they're public versus private, so the double underscore is unnecessary.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM