如何修复此错误?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
方法中指定了noreturn
,因此默认值为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是一个Employee实例打印(emp)
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
的情况下打印员工类的结果,而您没有这样的输出