metaclass

    1熱度

    1回答

    我是Groovy中的新成員,之前我只完成了C#和C++,所以我在習慣使用Java的時候遇到了一些問題,特別是我們用於項目的Groovy。所以這個問題涉及到Groovy。 我想: 創建一個新的X類: class X { double val } 超載基本運算符(+, - ,*,/,**等)變量的類X 問題是: - 在Groovy我可以重載運營商級的X包括一個屬性 - 值(即雙) X

    2熱度

    1回答

    在Java中,我們可以通過將類設爲抽象類來阻止實例化類。我以爲python會以同樣的方式行事。但讓我吃驚,我發現,我可以創造一個抽象類的一個對象: from abc import ABCMeta class Foo(metaclass=ABCMeta): pass Foo() 爲什麼蟒蛇允許這一點,我怎樣才能避免這種情況?

    0熱度

    1回答

    我是新來的python以及Django和學習序列化。我觀察到,在定義序列化器類時,它需要一個嵌套的元類。我對這個元類概念不太熟悉,所以我對它進行了搜索,發現元類是一個類,其實例是類。即使在閱讀後,我感到困惑。外部序列化程序類是內部元類的實例嗎?在這裏使用這個元類有什麼需要?

    23熱度

    4回答

    我終於升級我的Python版本,我發現新功能的加入。除此之外,我正在摸索新的__init_subclass__方法。從文檔: 只要包含的類是子類,就會調用此方法。然後cls 是新的子類。如果被定義爲一個正常的實例方法,該 方法隱式轉換爲一個類的方法。 於是我開始玩弄它一點點,下面的文檔的例子: class Philosopher: def __init_subclass__(cls, d

    0熱度

    1回答

    我想爲我的graphene.ObjectType子類創建一個meta類。我的主要目標是從包含其名稱的字符串列表中創建類的屬性(即Graphene對象的字段)。 例如,​​ 對於這份名單,我的課Attack必備的東西是這樣的: class Attack(graphene.ObjectType): quantity = graphene.String() position = gr

    0熱度

    1回答

    我想修改Groovy中的JSONObject的元類,使其像常規Groovy地圖一樣儘可能地表現。當我在元類中實現方法時,在下面的例子中,其中的一些就像JSONObject.metaClass.size一樣簡單。 JSONObject有一個length()方法,我只是將它連接到一個新的size()方法,但有些方法有特殊的含義。例如,要讓下標分配生效,我必須重寫propertyMissing,而不是p

    5熱度

    1回答

    我想創建一個只創建一個實例的類,如果在實例化過程中傳入的參數是唯一的組合。如果先前傳入了參數組合,則返回先前已創建的實例。 我想讓這個類被其他類繼承,所以它們繼承了相同的行爲。這是我的一個解決方案,第一次嘗試, 基/父類被繼承: class RegistryType(type): def __init__(cls, name, bases, namespace, *args):

    1熱度

    2回答

    添加說法我碰到這種設計模式跑在Python想,如果有人可以解釋,因爲我從來沒有 def func(): pass class Child(Parent, f=func): pass 不知道這裏發生了什麼之前見過它。如果父類具有元類定義,它可以在其中更改類構造函數以允許傳遞參數?任何幫助表示讚賞和抱歉的模糊

    -1熱度

    1回答

    向元類添加一個方法在下面的例子中可以很好地工作。 class Test(object): def __init__(self, x): self.x = x def double(self): return self.x*2 # method to add def quadruple(self): return self.x*4

    0熱度

    1回答

    Python 3.6增加了PEP 487,其中增加了__init_subclass__方法。是否有可能編寫不使用元類的ABC版本?