類物件支援兩種操作:屬性引用和例項化。
屬性引用 使用 python 中所有屬性引用所使用的標準語法: obj.name。 有效的屬性名稱是類物件被建立時存在於類命名空間中的所有名稱。 因此,如果類定義是這樣的:
"""a ****** example class"""
i = 12345
def f(self):
return 'hello world'
那麼 myclass.i 和 myclass.f 就是有效的屬性引用,將分別返回乙個整數和乙個函式物件。 類屬性也可以被賦值,因此可以通過賦值來更改 myclass.i 的值。doc也是乙個有效的屬性,將返回所屬類的文件字串: "a ****** example class"。
類的 例項化 是使用函式表示法。 可以相像python類物件就是會返回乙個新的類例項的不帶引數的函式。 舉例來說(假設使用上述的類):
建立類的新 例項 並將此物件分配給區域性變數 x。
例項化操作(「呼叫」類物件)會建立乙個空物件。 許多類喜歡建立帶有特定初始狀態的自定義例項。 為此類定義可能包含乙個名為 __init__() 的特殊方法,就像這樣:
self.data =
當乙個類定義了 __init__() 方法時,類的例項化操作會自動為新建立的類例項發起呼叫 __init__()。 因此在這個示例中,可以通過以下語句獲得乙個經初始化的新例項:
當然,__init__() 方法還可以有額外引數以實現更高靈活性。 在這種情況下,提供給類例項化運算子的引數將被傳遞給 __init__()。 例如,:
... def __init__(self, realpart, imagpart):
... self.r = realpart
... self.i = imagpart
...>>> x = complex(3.0, -4.5)
>>> x.r, x.i
(3.0, -4.5)
例項物件
現在我們可以用例項物件做什麼?例項物件理解的唯一操作是屬性引用。有兩種有效的屬性名稱,資料屬性和方法。
資料屬性 對應於 smalltalk 中的「例項變數」,以及 c++ 中的「資料成員」。 資料屬性不需要宣告;像區域性變數一樣,它們將在第一次被賦值時產生。 例如,如果 x 是上面建立的 myclass 的例項,則以下**段將列印數值 16,且不保留任何追蹤資訊:
while x.counter < 10:
x.counter = x.counter * 2
print(x.counter)
del x.counter
例項物件的有效方法名稱依賴於其所屬的類。 根據定義,乙個類中所有是函式物件的屬性都是定義了其實例的相應方法。 因此在我們的示例中,x.f 是有效的方法引用,因為 myclass.f 是乙個函式,而 x.i 不是方法,因為 myclass.i 不是乙個函式。 但是 x.f 與 myclass.f 並不是一回事 --- 它是乙個 方法物件,不是函式物件。 python(類和物件之物件例項函式)
物件例項函式 物件例項函式 class people object 如果需要在建立物件的時候,給物件屬性賦值,就可以在初始化函式中傳遞引數,給屬性賦值,若不需要,就不用寫了 def init self 初始化函式可以不用傳遞引數值 可以直接給屬性賦乙個預設值 self.name 張三 self.ag...
python 類,物件 例項
簡單示例 類方法 python 類方法和例項方法相似,它最少也要包含乙個引數,只不過,類方法中通常將其命名為 cls,且 python 會自動將類本身繫結給 cls 引數 而不是類物件 因此,在呼叫類方法時,無需顯式為 cls 引數傳參。類靜態方法 靜態方法,其實就是我們學過的函式,和函式唯一的區別...
Python學習筆記 類,類物件,例項物件
1 self 當例項方法被呼叫時,物件會將自身self作為第乙個引數傳入。所以在定義時需要將self寫入,在呼叫時不用寫。2 公有 私有 python的屬性和方法預設都是公有的,可以通過 訪問到,通過在屬性名前可以加上雙下劃線可以將其偽私有化,這樣只能通過類的方法來訪問了,為什麼是偽呢,因為pyth...