【问题标题】:How to implement string in python class?如何在python类中实现字符串?
【发布时间】:2021-12-15 06:26:23
【问题描述】:

我正在处理一个名为“员工类”的问题,并且大部分时间都在通过它,但它并没有打印出我想要的东西。这是我的程序:

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()

这是包含我的班级的文件:

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

我知道我需要实现一个字符串,但我卡住了。

【问题讨论】:

    标签: python string class


    【解决方案1】:

    您需要在您的员工类中定义__str__ 方法。这告诉编译器如何将您的类输出为字符串而不是对象哈希。

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

    【讨论】:

      【解决方案2】:

      您在课堂上使用的双下划线通常表示它是私有变量/属性。示例:

      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
      

      如果你只是删除那些下划线,你可以这样调用字符串:

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

      如果你想在类之外调用这些属性,那么它们是公共的而不是私有的,所以双下划线是不必要的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-28
        • 1970-01-01
        • 2020-11-12
        • 1970-01-01
        • 1970-01-01
        • 2021-01-27
        相关资源
        最近更新 更多