Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复此错误?python<__0x7f2358d89910处的主要员工>;没有一个_Python - Fatal编程技术网

如何修复此错误?python<__0x7f2358d89910处的主要员工>;没有一个

如何修复此错误?python<__0x7f2358d89910处的主要员工>;没有一个,python,Python,这是输出 Enter your ID: 1234 Enter your NAME: Name Enter your AGE: 20 Enter your Birthdate: 12 EMPLOYMENT STATUS: Enter 1 if you are employed: Enter 2 if unemployed: 1 Enter 1 if the employment is permanent: Enter 2 if the employment a j

这是输出

Enter your ID: 1234

Enter your NAME: Name
 
Enter your AGE: 20 

Enter your Birthdate: 12 

EMPLOYMENT STATUS:  
Enter 1 if you are employed:  
Enter 2 if unemployed:  

1 

Enter 1 if the employment is permanent:

Enter 2 if the employment a job-order: 

2

<__main__.Employee at 0x7f2358d89910>

None

由于在
display
方法中指定了no
return
,因此默认值为
None
,请参阅

您的
display
方法显示了一些东西,您不希望它返回任何东西,所以可以这样调用它

# Displaying each objects of the list
for employee_object in employee_List:
    display(employee_object)

然后是一些python编码细节

  • 使用
    @属性

    # If you defined a self._name attribut
    
    @property
    def name(self):
        return self._name
    @name.setter
    def name(self, name):
        self._name = name
    
    # GET use : employee.name
    # SET use : employee.name = emp_name
    
  • 使用带参数的构造函数,这样更好

    class Employee(object):
        def __init__(self, emp_id, name, age, birthdate, status):
            self._id = emp_id
            self._name = name
            self.age = age
            self.birthdate = birthdate
            self.status = status
    
  • 不要使用外部方法
    display
    ,有一种内置的
    \uuuu str\uuuu
    (或
    \uuu repr\uuuu
    )请参见,将其添加到
    Employee
    类中,然后使用
    打印(emp)
    ,其中emp是一个Employee实例

    def __str__(self):
        return "\n".join((
            f"ID: {self.id}",
            f"Name: {self.name}",
            f"Age: {self.age}",
            f"Birthdate: {self.birthdate}",
            f"Status: {self.status}",
        ))
    
那么,您使用的创建列表/添加一个实例/在列表上迭代来填充实例的原则不是一个好主意,因为您有固定数量的员工,而不是动态给定的

我建议使用
while
循环,当您在ID输入处输入
stop
时,该循环将停止

employee_List = []

while True:
    emp_id = input("Enter your ID: ('stop' to quit)")

    if emp_id == "stop":
        break

    emp_name = input("Enter your NAME: ")
    emp_age = input("Enter your AGE: ")
    emp_birthdate = input("Enter your Birthdate: ")
    emp_stat1 = input("EMPLOYMENT STATUS: \nEnter 1 if you are employed: \nEnter 2 if unemployed: \n")
    if emp_stat1 == '1':
        emp_stat2 = input("Enter 1 if the employment is permanent: \nEnter 2 if the employment a job-order: \n")
        if emp_stat2 == '1':
            emp_status = "PERMANENT"
        elif emp_stat2 == '2':
            emp_status = "JOB ORDER"
    elif emp_stat1 == '2':
        emp_stat2 = input("Enter 1 if you are a freelancer: \nEnter 2 if you are seeking a job: \n ")
        if emp_stat2 == '1':
            emp_status = "FREELANCER"
        elif emp_stat2 == '2':
            emp_status = "JOB SEEKER"

    emp = Employee(emp_id, emp_name, emp_age, emp_birthdate, emp_status)
    employee_List.append(emp)

for employee_object in employee_List:
    print(employee_object, "\n")

当使用print时,python将调用类的str方法,因此如果要打印可读信息,可以使用

print(employee_object)
并将str方法插入到您的类中,这可能类似于:

def __str__(self):
    return f'The employee {self.name} is {self.status}'

没有人会再犯那样的错误;可能连你都不会。您有一个特定的类,该类与您自己的代码相关,还有一个内存地址。这甚至不是一个错误,它只是一个类的标准
\uuuuu repr\uuuuuu
。你应该将你的代码添加到你的初始帖子,问题,下面是我使用它时得到答案的地方code@FrenchieEstoquiaChua我刚写完我的代码。您永远不应该拥有显示给我的输出,因为它是在没有定义
\uuu str\uuuu
\uu repr\uuu
的情况下打印员工类的结果,而您没有这样的输出