new-style-class

    1熱度

    1回答

    由於Python努力爭取有一個正確的方式,我想知道property.getter的目的是什麼。在這個例子中,WhyMe定義了一個getter,但其他的不是,所以我想知道property.getter的要點是否只是使用屬性。 class WhyMe(object): def __init__(self): self._val = 44 @property

    5熱度

    1回答

    這是一個老樣式類: class OldStyle: pass 這是一種新式類: class NewStyle(object): pass 這也是一個新式類: class NewStyle2: __metaclass__ = type 有NewStyle和NewStyle2之間有什麼不同? 我的印象是,從object繼承的唯一影響實際上是定義了type元類,

    5熱度

    2回答

    在Python 2.x中,所有新式類都從object隱式或顯式繼承。然後看看這個: >>> class M(type): ... pass ... >>> class A: ... __metaclass__ = M ... >>> class B: ... pass ... >>> a = A() >>> b = B() >>> type(A) <class '_

    5熱度

    2回答

    我正在學習Python,並且我試圖更好地理解描述符。當我看到這條巨蟒的在線圖書:http://www.cafepy.com/article/python_attributes_and_methods/ch01s05.html,它說: 如果attrname是對象名特殊(即Python的提供)屬性,其返回。 我不明白Python提供的意思。有人可以給我一個這樣的Python提供的屬性的例子,它會優先於

    0熱度

    1回答

    根據Python的2.7.12文檔: 如果__setattr__()想分配給一個實例屬性,它應該 不能簡單地執行self.name = value - 這會導致遞歸調用 本身。相反,它應該將值插入實例屬性的詞典 中,例如self.__dict__[name] = value。 對於 新樣式類,而不是訪問實例字典,它應該調用具有相同名稱的基類方法,例如, object.__setattr__(sel

    1熱度

    1回答

    我正在挑選一些C++ Python包裝器代碼,它允許消費者從C++構造自定義舊式和新式Python類。 原始代碼來自PyCXX,新舊風格類別here和here。然而,我已經對代碼進行了大量改寫,在這個問題中,我會引用自己的代碼,因爲它使我能夠以最清晰的方式呈現我所能做到的。我想只有極少數人能夠理解原始代碼,而不需要經過幾天的審查......對我來說,這花了數週時間,但我仍然不清楚。 舊風格簡單地從

    1熱度

    2回答

    什麼是簡單的效用函數,以舊式的和新的風格的蟒蛇類或對象區分? 有以下幾種正確/完整: isNewStyle1 = lambda o: isinstance(hasattr(o, '__class__') and o.__class__ or o, type) isNewStyle2 = lambda o: hasattr(o, '__class__') and type(o) == o.__cl

    2熱度

    2回答

    考慮經典類和新樣式類之間的以下差異。 class A(): data = 'abcd' def __getattr__(self, name): return getattr(self.data, name) class B(object): data = 'abcd' def __getattr__(self, name)

    20熱度

    2回答

    可能重複: Old style and new style classes in Python 什麼是新的風格和老式類事務在Python 2.7的現狀如何?我經常不使用Python,但我依稀記得這個問題。文檔似乎沒有提到這個問題:The Python Tutorial: Classes。我仍然需要擔心這個嗎?在一般情況下,我應該宣佈我的類如下: class MyClass: pass

    2熱度

    1回答

    舊式類 class Person(): _names_cache = {} def __init__(self,name): self.name = name def __new__(cls,name): return cls._names_cache.setdefault(name,object.__new__(cls,name)) ah