首页 > 解决方案 > 如何使用 print 在 python 中显示类实例

问题描述

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

我已经按照某人的建议使用了 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 循环中所做的更改打印出实例

标签: pythonclassfor-loopinstance-variables

解决方案


您可以使用 __repr__ 方法,不是使用__str__方法。使用此方法,您无需将实例显式转换为字符串。找到代码:

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

    def __repr__(self):
        return 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)

输出如下:

Name :  n , Salary:  2
Total Employee 1
Name :  n , Salary:  2
Total Employee 2
[n, n]

希望这可以帮助!


推荐阅读