[心得]python元類解密
在大多數程式語言中,類就是一組用來描述如何生成一個物件的程式碼段。
類同樣也是一種物件。是的,沒錯,就是物件。只要你使用關鍵字class,Python直譯器在執行的時候就會建立一個物件。
這個物件(類)自身擁有建立物件(類例項)的能力,而這就是為什麼它是一個類的原因。它的本質仍然是一個物件。
type有一種完全不同的能力,它也能動態的建立類。type可以接受一個類的描述作為引數,然後返回一個類。
type(類名, 父類的元組(針對繼承的情況,可以為空),包含屬性的字典(名稱和值))
Foo = type('Foo', (), {'bar':True})
繼承
FooChild = type('FooChild', (Foo,),{})
定義函式:
def echo_bar(self):
… print self.bar
…
>>> FooChild = type('FooChild', (Foo,), {'echo_bar': echo_bar})
元類就是用來建立類的“東西”。type就是Python在背後用來建立所有類的元類。
可以在寫一個類的時候為其新增__metaclass__屬性。
元類的主要目的就是為了當建立類時能夠自動地改變類。元類的主要用途是建立API。
就元類本身而言,它們其實是很簡單的:
1) 攔截類的建立
2) 修改類
3) 返回修改之後的類
還可以通過其他兩種技術來修改類:
1) Monkey patching
Monkey patch就是在執行時對已有的程式碼進行修改,達到hot patch的目的。
2) class decorators
decorator 其實就是一個至少具有一個引數的函式 —— 程式設計師要負責確保 decorator 的返回內容仍然是一個有意義的函式或方法,並且實現了原函式為使連線有用而做的事情。
相關文章
- Python 元類Python
- Python的元類Python
- Python元類與列舉類Python
- Python元類再談Python
- python元類淺析Python
- 由ORM談Python元類ORMPython
- Python之元類筆記Python筆記
- python中的元類MetaclassPython
- 草根學Python(十二)元類Python
- 理解Python中的元類Python
- Python學習之路41-元類Python
- 2.1.5 Python元類深刻理解(metaclass)Python
- python面試題~反射,元類,單例Python面試題反射單例
- [心得] python打包Python
- 深刻理解Python中的元類(metaclass)Python
- python 類和元類(metaclass)的理解和簡單運用Python
- Asp.net 加密解密類ASP.NET加密解密
- [python]python三元表示式另類實現方式Python
- Python 的元類設計起源自哪裡?Python
- vue 核心加解密工具類 方法Vue解密
- Base64工具類(加密、解密)加密解密
- 元類:Metaclass
- python語言心得(小白)Python
- Crypto++的類佈局研究心得
- Python進階丨如何建立你的第一個Python元類?Python
- 一個聚合的加解密工具類解密
- 元類詳解
- 23. 元類
- 初觸python心得隨寫Python
- 友元函式和友元類函式
- python AES-CBC 加密解密Python加密解密
- python各種加解密方法Python解密
- Django中的元類Django
- python學習心得體會(一)Python
- PHP和.NET通用的加密解密函式類,均使用3DES加解密PHP加密解密函式3D
- 一篇文章告訴你什麼是 Python 元類Python
- Python AES - base64 加解密Python解密
- 解密 Python 的描述符(descriptor)解密Python