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

标签 python class for-loop instance-variables

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

我按照某人的推荐使用了 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 循环中所做的更改的实例

最佳答案

您可以使用 __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]

希望这有帮助!

关于python - 如何在python中使用print显示类实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58098116/

相关文章:

python - sqlalchemy中日期时间字段的过滤时间范围

powershell - 对列表使用for循环并将元素设置为环境变量,然后获取值

python - 按值加入列表

jquery - 偏移然后将class添加到div

python - 使用 for if break 语句在列表中追加值

python - Pandas DataFrame 中哪些列是二进制的?

python - 在 ubuntu 上将 python3.4 升级到 python3.6 会破坏 pip

python - for循环和创建列表列表的问题

python - 如何将 multiprocessing.Pool 实例传递给 apply_async 回调函数?

python - OOP:在初始化类时使用条件语句