2012-06-04 18 views
-1

即時嘗試修改Python中'int'類型 的行爲。修改Python中的inmutable類型的__new__屬性

它說

'__new__' is readonly.

有沒有辦法做到這一點?

謝謝。

+1

爲什麼你會想要做這樣的事情?你希望完成什麼? –

+0

即時通訊編寫一個DSL,並即時搜索如何使常量返回從內置的int類型派生而不是內置的int類型。在紅寶石你可以做到!請看下面這個問題:http://stackoverflow.com/questions/10857353/ironpython-dsl-casting-constants-to-c-sharp-types – user1275011

+0

@ user1275011:這實際上是Ruby的缺點:做這樣的事情會影響所有的庫和模塊,所以你甚至不能再使用標準庫。 Python中的一個類似問題是,你可以覆蓋內置函數,例如'import __builtin__; __builtin __。len = lambda x:42'可能會破壞大部分標準庫。當然,你不會這樣做,但是人們可能會試圖做一些像'__builtin__.open = io.open'這樣的事情,這可能會導致在某些情況下微妙的破壞。如果這樣的事情一開始就不可能,那會更好。 –

回答

5

您不能修改內置型,但你可以從中獲得:

class MyInt(int): 
    def __new__(cls, *args): 
     # whatever