摘要:以下的區別有意義么如果你需要創建很多實例,這兩種風格在表現和空間要求上有什么區別么當你閱讀代碼的時候,你是否會考慮這兩種風格的重要區別除了表現上的考慮,這邊有一個重要的語義上的不同。用實例屬性設置的實例中,實例有可能被多個對象引用。
以下的區別有意義么?
class?A(object): ? ? foo?=?5? ?#?some?default?value
Vs
class?B(object):? ? def?__init__(self,?foo=5): ? ? ? ? ?????self.foo?=?foo
如果你需要創建很多實例,這兩種風格在表現和空間要求上有什么區別么?當你閱讀代碼的時候,你是否會考慮這兩種風格的重要區別?
除了表現上的考慮,這邊有一個重要的語義上的不同。在類屬性的那個例子中,只有一個對象被引用。用實例屬性設置的實例中,實例有可能被多個對象引用。比如說:
>>>?class?A:?foo?=[ ] >>>?a,?b?=?A(),?A() >>>?a.foo.append(5) >>>?b.foo [5] >>>?class?A: ...? def?__init__(self):?self.foo?=?[ ] >>>?a,?b?=?A(),?A() >>>?a.foo.append(5) >>>?b.foo? ? []
來源:Python: Difference between class and instance attributes
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38199.html
摘要:以下的區別有意義么如果你需要創建很多實例,這兩種風格在表現和空間要求上有什么區別么當你閱讀代碼的時候,你是否會考慮這兩種風格的重要區別除了表現上的考慮,這邊有一個重要的語義上的不同。用實例屬性設置的實例中,實例有可能被多個對象引用。 以下的區別有意義么? class?A(object): ? ? foo?=?5? ?#?some?default?value Vs class?B(ob...
摘要:不像其他屬性,描述符在類級別上創建。當所有者類被定義時,每個描述符對象都是被綁定到一個不同的類級別屬性的描述符類實例。這必須返回描述符的值。此外,描述符對有一個方便的響應和請求格式。 注:原書作者 Steven F. Lott,原書名為 Mastering Object-oriented Python __getattribute__()方法 __getattribute__()方法是...
摘要:同時,有多個類級別的靜態構造函數的方法。這個累贅,無論如何,是被傳遞到每個單獨的對象構造函數表達式中。我們可能只有幾個特定的擔憂,提供額外關鍵字參數給構造函數。 注:原書作者 Steven F. Lott,原書名為 Mastering Object-oriented Python 沒有__init__()的無狀態對象 下面這個示例,是一個簡化去掉了__init__()的類。這是一個常見...
摘要:如果還是沒有找到,就會使用父類中的元類來創建類。元類通常用于處理比較復雜的情況。這是因為使用了元類,它會將中定義的字段轉換成數據庫中的字段。中所有數據類型都是對象,它們要么是類的實例要么是元類的實例。 原文地址:what is metaclass in Python?我的簡書地址::nummy 類即對象 在理解元類之前,需要先掌握Python中的類,Python中類的概念與SmallT...
摘要:第一是在對象生命周期中初始化是最重要的一步每個對象必須正確初始化后才能正常工作。第二是參數值可以有多種形式。基類對象的方法對象生命周期的基礎是它的創建初始化和銷毀。在某些情況下,這種默認行為是可以接受的。 注:原書作者 Steven F. Lott,原書名為 Mastering Object-oriented Python __init__()方法意義重大的原因有兩個。第一是在對象生命...
閱讀 2569·2021-11-23 09:51
閱讀 2481·2021-09-30 09:48
閱讀 1076·2021-09-10 10:51
閱讀 2213·2021-08-12 13:22
閱讀 3568·2021-08-11 10:24
閱讀 2167·2019-08-30 15:55
閱讀 646·2019-08-30 14:05
閱讀 3211·2019-08-30 13:03