如何使用print在python中显示类实例

问题描述 投票:1回答:1

我正在尝试打印类的实例,但是得到的结果似乎是正确的格式,但不是我想要的输出。

我按照有人的建议使用了def str(self),但我仍然得到相同的结果

这是完整的代码:

class Employee:

    empCount = 0
    def __init__(self,name,salary):
        self.name = name 
        self.salary = salary
        Employee.empCount += 1
    def __str__(self):
        print (self.name)
    def displayCount(self):
        print("Total Employee %d" % Employee.empCount)

    def displayEmployee(self):
        print ("Name : ", self.name, ", Salary: ",self.salary)
global emp1
global emp2
global n
global s
emp1 = ''
emp2 = ''
alist = [emp1,emp2]
alist_final =[]
for y in alist:
    y = Employee('n',2)
    alist_final.append(y)
    y.displayEmployee()
    print("Total Employee %d" % Employee.empCount)



print(alist_final)

这是我在命令行上得到的结果:

C:\Users\Demi\Desktop\virtuallearner>pr.py
z
2
Name :  z , Salary:  2
Total Employee 1
m
5
Name :  m , Salary:  5
Total Employee 2
[<__main__.Employee object at 0x0000022AFA278550>, <__main__.Employee object 
at 0x0000022AFA278550>]

我正在尝试打印出在for循环中进行了更改的实例

python class for-loop instance-variables
1个回答
0
投票

您可以只实现自己的__str__方法并返回所需的表示形式,例如,

$ cat emp.py
class Employee:

    empCount = 0
    def __init__(self,name,salary):
        self.name = name 
        self.salary = salary
        Employee.empCount += 1

    def __str__(self):
        return '{}(name={}, salary={})'.format(
                        self.__class__.__name__,
                        self.name,
                        self.salary)

    def displayCount(self):
        print("Total Employee %d" % Employee.empCount)

    def displayEmployee(self):
        print ("Name : ", self.name, ", Salary: ",self.salary)


alist_final =[]
for _ in range(2):
    y = Employee('n',2)
    alist_final.append(y)
    y.displayEmployee()
    print("Total Employee %d" % Employee.empCount)

print([str(x) for x in alist_final])

输出:

$ python emp.py
('Name : ', 'n', ', Salary: ', 2)
Total Employee 1
('Name : ', 'n', ', Salary: ', 2)
Total Employee 2
['Employee(name=n, salary=2)', 'Employee(name=n, salary=2)']
© www.soinside.com 2019 - 2024. All rights reserved.