您好香港專業教育學院只被現在的編碼約3星期,我碰到這個代碼時,我把它放在什麼也不做絆倒了。新的Python類和對象
class calculation(object):
def multiply(self, a=5, b=6):
self.a = a
self.b = b
我知道它的簡單,但我編程方面我還是一個新手,如果有人能給出一個簡單的解釋,爲什麼這不起作用,我真的很感激它。謝謝
您好香港專業教育學院只被現在的編碼約3星期,我碰到這個代碼時,我把它放在什麼也不做絆倒了。新的Python類和對象
class calculation(object):
def multiply(self, a=5, b=6):
self.a = a
self.b = b
我知道它的簡單,但我編程方面我還是一個新手,如果有人能給出一個簡單的解釋,爲什麼這不起作用,我真的很感激它。謝謝
它不會因爲壓痕錯誤的工作。縮進是Python如何知道def
是一個類的方法而不是頂級的普通函數,它是如何知道哪些行是循環的一部分以及循環結束的地方等等。你必須正確地做到這一點。但是,你有這樣的:
class calculation(object):
def multiply(self, a=5, b=6):
self.a = a
self.b = b
因爲def
被dedented回到同一水平爲class
,還有裏面的類什麼都沒有。這不合法;每個複合語句(以類似於類定義的語句結尾爲:
)必須後跟一個縮進的東西。
最重要的是,multiply
參數爲self
這一事實意味着它幾乎可以肯定是某種類的方法。
因此,要解決這個問題:
class calculation(object):
def multiply(self, a=5, b=6):
self.a = a
self.b = b
而現在,它的工作原理。但它似乎沒有做任何事情,是嗎?
當然總是有可能你沒有複製整個事情。或者,無論你從哪裏複製它,代碼都是錯誤的並且缺少一行。但讓我們假設這真的是一個有用的函數,從某人的有用代碼(除了縮進錯誤)。
首先,你要做的就是定義一個類。如果從不創建該類的實例,更不用說調用任何方法,那麼該類就不會執行任何操作。但是讓我們假設你知道這一點,並且你知道如何創建一個實例並調用方法。它仍然似乎沒有做任何事情。
最有可能(再次,假設這是你真正要求的,並且你複製了代碼,並且......)這樣做的是存儲操作數以便稍後使用。
一個現實的例子是,你爲什麼想要這麼做會出現在某種表達樹庫中,它在解析*
時調用multiply
,並逐漸建立複雜的表達式,也許這樣你就可以可以將表達式編譯爲C代碼或對其進行代數轉換。
但是,這或許聽起來像是官樣文章來你,所以這裏是一個簡單而愚蠢的例子:
class calculation(object):
def multiply(self, a=5, b=6):
self.a = a
self.b = b
table = []
for a in range(1, 5):
row = []
for b in range(1, 5):
col = calculation()
col.multiply(a, b)
row.append(col)
table.append(row)
print('Times table')
for row in table:
for col in row:
print('{} x {} = {}'.format(col.a, col.b, col.a * col.b))
您的問題是class
內部的函數是錯誤的。嘗試縮進。另外,您multiply
功能,你可能想返回兩個值乘以:
class calculation(object):
def multiply(self, a=5, b=6):
self.a = a
self.b = b
return self.a * self.b
爲什麼這個標籤C++?而你的意思是*什麼都不做*?由於縮進縮減,這甚至不是有效的Python代碼。 – Praetorian
類計算(對象): \t DEF相乘(個體中,a = 5,B = 6): \t \t self.a =一個 \t \t self.b = B –
@KhalilG。您可以通過按編輯按鈕來編輯您的帖子。請修正縮進,如果這是你打算對你的評論做什麼。 –