1. 程式人生 > >Python入門錯誤筆記(1)--object() takes no parameters與name 'label_price' is not defined

Python入門錯誤筆記(1)--object() takes no parameters與name 'label_price' is not defined

學習Python面向物件的時候,寫了一個簡單的關於面向物件的程式:

class Product(object):
    def _init_(self,name):
        self.name=name
        self.label_price=0
        self.real_price=0

c=Product("電腦")
d=Product("印表機")
e=Product("投影儀")
c.label_price,c.real_price=1000,800
d.label_price,d.real_price=2000,1000
e.label_price,e.real_price=3000,1500
s1,s2=0,0
for i in [c,d,e]:
    s1+=label_price
    s2+=real_price
print(s1,s2)

之後編譯器報出第一個錯誤:object() takes no parameters

綜合大佬的部落格,發現:1.可能是init初始化錯誤,init寫出int了

                                        2.可能是兩側的雙下滑線寫成了兩側的單下劃線或者單側的單/雙下劃線

發現:是我發現是我雙下劃線寫成了單下劃線

改正之後,第二個問題出來了:name 'label_price' is not defined

搜尋大佬的部落格,發現這樣的編譯器提示對應的錯誤型別,就是什麼名字大小寫有差錯這樣的基礎問題。看了別人的內容類似的部落格,自己發現:在面向物件的程式設計中,是這個變數沒有被呼叫

(自己想的啊,有錯誤歡迎指正),應該在for迴圈中呼叫這個變數,i.real_price,i.label_price

之後這段程式就能正確輸出了:

    def __init__(self,name):
        self.name=name
        self.label_price=0
        self.real_price=0

c=Product("電腦")
d=Product("印表機")
e=Product("投影儀")
c.label_price,c.real_price=1000,800
d.label_price,d.real_price=2000,1000
e.label_price,e.real_price=3000,1500
s1,s2=0,0
for i in [c,d,e]:
    s1+=i.label_price
    s2+=i.real_price
print(s1,s2)