Singleton 這東西大家想必不陌生,在 Python 裡實做的方式滿多, 這邊用這個當例子介紹 Meta Class 可以做什麼。
概念上很簡當, 讓Class的建構子不能產生Instance, 然後再提供一個 class method 能夠取得Instance(而且只能有一個), 在Python 你可以用id來檢查兩個物件是不是相同的。
class Singleton(type):
def __init__(cls,name,bases,dic):
super(Singleton,cls).__init__(name,ba…
繼續閱讀⋯⋯
在 Python 編程中,我們經常會遇到需要自定義模板字符串的情況。Python 標準庫中的 Template 類提供了一種靈活的方式來處理字串替換,但它的使用有時會受到限制。特別是當涉及到修改 Template 類的 delimiter 屬性時,事情就變得複雜起來。這是因為 Template 類的設計包含了元類(meta class),使得在類或實例層面上直接修改 delimiter 變得不可行。本文將探討這一問題的背後原理,並提供一種簡單的解決方案。
用途: 用來警告 function 或 class method 已過時,如果有指定取代的function的話,在runtime時改用取代的function
Python 2.7.2+ (default, Oct 4 2011, 20:03:08)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from vsg…
繼續閱讀⋯⋯
Debian 官方目前建議改用使用 dh_python2
取代 py_support
及 py_central
,以下是自己轉換的紀錄,只適用打包單純的Python module,並不適合Python module裡面有包含extension.
當資料耦合度很高時候, 我習慣做一個 data object 把他放進去, 因為 python 是動態程式語言,所以你可以在建立物件時,直接設定 object attribute value。
簡單版本
class Data(object):
def __init__(self, **kwargs):
self.__dict__.update(kwargs)
# the result is hychen
print Data(name='hychen').name
這個版本則保護了built-in attrib…
繼續閱讀⋯⋯