Python基礎 22新式類

2021-07-03 05:10:17 字數 1017 閱讀 7184

1:工廠函式

由於型別和類的統一,因而可以子類化python資料型別。但是所有的python 內建的轉換函式現在都是工廠函式。當這些函式被呼叫時,你實際上是對相應的型別進行例項化。比如下面的函式都已經成為工廠函式:int(), long(), float(), complex(), str(), unicode(), list(), tuple(), type()。

2__slots__類屬性

字典屬於例項的「心臟」。_

_dict__屬性跟蹤所有例項屬性。比如有乙個例項inst.它有乙個屬性foo,那使用inst.foo來訪問它與使用inst.__dict__['foo']來訪問是一致的。

字典會佔據大量記憶體,如果

有乙個屬性數量很少的類,但有很多例項,那麼出於記憶體上的考慮,可以使用__slots__屬性來替代__dict__。

__slots__

是乙個類變數,是一串行型物件,是例項屬性的集合。它可以是乙個列表,元組或可迭代物件。也可以是標識例項能擁有的唯一的屬性的簡單字串。任何試圖建立乙個其名不在__slots__中的名字的例項屬性都將導致attributeerror 異常,比如:

class  slottedclass(object):

__slots__ = ('foo','bar')

>>> c = slottedclass()

>>> c.foo = 42

>>> c.*** = "don't think so"

traceback (most recent call last):

file "", line 1, in ?

attributeerror: 'slottedclass' object has no attribute

'***'

這種特性的主要目的是節約記憶體。其***是禁止使用者隨心所欲的動態增加例項屬性。帶__slots__屬性的類定義不會存在__dict__了。

python基礎 新式類實現單例模式

在網上看了有關python實現單例模式的部落格,發現好多都是 的,並且都是按照python2.x版本舊式類的方式寫的。雖然也能讀懂,但對於我這種一開始學的就是python3.x的新手來說,心裡總有點彆扭。所以今天我就把蒐集來的單例模式稍加修改一下,以新式類的方式寫下來。1.在寫 之前,先理解乙個概念...

python 新式類和舊式類

python的新式類是2.2版本引進來的,我們可以將之前的類叫做經典類或者舊類。為什麼要在2.2中引進new style class呢?官方給的解釋是 為了統一類 class 和型別 type 在2.2之前,比如2.1版本中,類和型別是不同的,如a是classa的乙個例項,那麼a.class 返回 ...

python 新式類和舊式類

新式類和舊式類 python的新式類是2.2版本引進來的,我們可以將之前的類叫做經典類或者舊類。為什麼要在2.2中引進new style class呢?官方給的解釋是 為了統一類 class 和型別 type 在2.2之前,比如2.1版本中,類和型別是不同的,如a是classa的乙個例項,那麼a.c...