class Example:
def __init__(self, sides, name):
self.sides = sides
self.name = name
為什么下面的附加屬性(interior_angles 和 angle)沒有在括號中定義,然后寫在函式中?
class Example:
def __init__(self, sides, name):
self.sides = sides
self.name = name
self.interior_angles = (self.sides-2)*180
self.angle = self.interior_angles/self.sides
我還看到在括號本身中定義了一些屬性。在什么情況下你應該這樣做?例如:
class Dyna_Q:
def __init__(self, environment, alpha = alpha, epsilon = epsilon, gamma = gamma):
謝謝你。
uj5u.com熱心網友回復:
在python的建構式中,'self'指向要創建的當前物件。
您的問題:為什么下面的附加屬性(interior_angles 和 angle)沒有在括號中定義,然后寫在函式中?
事實是,如果您在新創建的物件中設定了準備好的值,您將將該值傳遞給括號內的建構式。
但是,如果您不知道要放入新物件中的值并且還需要計算該值,您將不會在括號內傳遞該值。
核心是理解“自我”關鍵字。如果你這樣做self.<property_name> =,你正在你的物件內創建一個新的屬性(欄位)。
uj5u.com熱心網友回復:
編程中的正則括號()的使用通常與數學中的使用非常相似:將東西組合在一起并更改操作順序。
4 - 2 == ( 4 - 2 )
然而,這將是真的
(4 - 2) / 2 == 4 - 2 / 2
不會的。此外,正如您正確觀察到的那樣,它們用于基本上告訴解釋器函式名稱在哪里結束并且引數從哪里開始,因此在方法定義的情況下,它們位于名稱之后和:. 您上一個示例中的分配并不是真正的分配,而是默認值;我假設您alpha的范圍內有全域變數等,這就是它起作用的原因。
那么什么時候用括號呢?例如:
- 當您想要更改操作順序時。
- 當你想呼叫或定義一個函式時。
- 當你想定義一個類的繼承時
class Myclass(MyBaseClass): ... - 有時元組,雖然
return a, b和return (a,b)是一回事。 - 在數學中,可以使用額外的括號來明確運算的順序,例如
(4-2) == (4-2)顯示計算是在比較之前完成的。
uj5u.com熱心網友回復:
該__init__方法是物件建構式。這意味著他的引數是初始化每個物件實體所需的基本引數。
另一方面,“interior_angles”和“angle”是基于邊計算的屬性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/450473.html
上一篇:類方法不會給出正確的輸出
下一篇:在理解C#類和物件方面需要幫助
