如何在 Python 實作 Singleton?
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 中動態改變 string.template 的 delimiter?

在 Python 編程中,我們經常會遇到需要自定義模板字符串的情況。Python 標準庫中的 Template 類提供了一種靈活的方式來處理字串替換,但它的使用有時會受到限制。特別是當涉及到修改 Template 類的 delimiter 屬性時,事情就變得複雜起來。這是因為 Template 類的設計包含了元類(meta class),使得在類或實例層面上直接修改 delimiter 變得不可行。本文將探討這一問題的背後原理,並提供一種簡單的解決方案。

繼續閱讀⋯⋯
如何在 Python 中用 Decorator 顯示 deprecated 警告?
用途: 用來警告 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…
繼續閱讀⋯⋯
如何使用 dh_python2 製作 Debian Package?

Debian 官方目前建議改用使用 dh_python2 取代 py_supportpy_central,以下是自己轉換的紀錄,只適用打包單純的Python module,並不適合Python module裡面有包含extension.

繼續閱讀⋯⋯
如何在 Python 用 Data Object 傳遞資料?
當資料耦合度很高時候, 我習慣做一個 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…
繼續閱讀⋯⋯