Python入門錯誤筆記(1)--object() takes no parameters與name 'label_price' is not defined
阿新 • • 發佈:2018-12-10
學習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
搜尋大佬的部落格,發現這樣的編譯器提示對應的錯誤型別,就是什麼名字大小寫有差錯這樣的基礎問題。看了別人的內容類似的部落格,自己發現:在面向物件的程式設計中,是這個變數沒有被呼叫
之後這段程式就能正確輸出了:
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)