我的問題是爲什麼我無法讓類的對象給它一個整數作爲參數。它完全忽視了我作爲參數傳遞給它的價值。然而,如果我從類中調用區域函數並將相同數字傳遞到它的括號中,它將輸出所需的結果144.爲什麼這個類的方法沒有這個參數?
從我目前閱讀的內容中,我最好的猜測是類函數的方式是編碼是不正確的,我希望它會實現。我是否需要將區域函數看作如下參數:self.length
?
# -*- coding: utf-8 -*-
class square:
sides = 4
def __init__(self, length):
self.length = length
def area(self, length):
return length * length
box = square(12)
print(box.area())
輸出:TypeError: area() missing 1 required positional argument: 'length'
不應該被保存所賦予它爲對象的生活的持續時間值創建的對象?爲什麼當我告訴它如果打電話看起來像這樣再次從area方法打印時會拋出另一個錯誤?
print(box.area(12))
output:144
print(box.area())
output: <bound method square_shape.area of <__main__.square_shape object at 0x7f5f88355b70>>
我很抱歉,如果這個問題是一個有點古怪的措辭,但我只是在尋找儘可能多的信息,我可以得到,並試圖更好地瞭解我在做什麼這裏。關於這個問題的其他問題並沒有很好地理解我想要弄清楚什麼。
所以,如果我的理解正確,那麼長度是這個對象的局部變量,我做某事的方式是以某種方式將它視爲一個全局變量? – Ragecoder
也許吧?如果你正在考慮它,那麼你當前的術語是關閉的。長度是一個實例字段。還有一個長度局部變量。 「局部變量」是指本身的作用域。一旦區域完成並返回一個值,則不再定義作爲局部變量的「長度」。但是self.length,只要你處理這個對象的特定實例,實例字段就會保持它的值。 –
你先生是個巧妙的人。你能否評論一下,以自我爲參數的功能究竟是如何導致這種巫術的?當它通過自我時,它是否將創建對象時傳遞的所有參數傳遞給區域函數? – Ragecoder