亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 print 在 python 中顯示類實例

如何使用 print 在 python 中顯示類實例

ABOUTYOU 2022-06-07 17:08:40
我正在嘗試打印一個類的實例,但是我得到的結果似乎格式正確,但不是我正在尋找的輸出。我已經按照某人的建議使用了 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 emp1global emp2global nglobal semp1 = ''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.pyz2Name :  z , Salary:  2Total Employee 1m5Name :  m , Salary:  5Total Employee 2[<__main__.Employee object at 0x0000022AFA278550>, <__main__.Employee object at 0x0000022AFA278550>]我正在嘗試使用 for 循環中所做的更改打印出實例
查看完整描述

3 回答

?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

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

希望這可以幫助!


查看完整回答
反對 回復 2022-06-07
?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

這里有兩點需要注意。

  1. 您沒有調用str實例的方法。相反,您正在調用print容器,即alist_final,它是一個列表。

    print(somelist)將調用 str 方法somelist,而不是list

  2. 您沒有返回字符串表示形式。取而代之的是,您使用print.

您需要return__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)']


查看完整回答
反對 回復 2022-06-07
?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

添加__repr__將在您的類的實例傳遞到打印函數時運行的方法。

def __repr__(self) -> str:
    return f"employee<{name: {self.name}, salary: {self.salary}>"


查看完整回答
反對 回復 2022-06-07
  • 3 回答
  • 0 關注
  • 216 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號