metaclass

    10熱度

    1回答

    注意這個問題不是關於Python 3 Enum數據類型,它只是我正在使用的示例。 PEP 3115隨着Python 3的添加__prepare__ 方法type用於允許創建類時使用的自定義名稱空間的目的。例如,新的Enum數據類型使用__prepare__返回專用_EnumDict的實例,以用作新的Enum類的名稱空間。 然而,我看到的幾個例子對SO的EnumMeta 被子類,創建用於在元類__n

    0熱度

    1回答

    我們在ERP系統中有幾個客戶端。每個客戶端都有自己的數據庫。數據庫在架構方面是相同的。 不要問我爲什麼,但ERP數據庫沒有正式定義的PK,所以它不可能反映數據庫......反而我們發現聲明一個Metaclass和一個表聲明,詳述了PK和自動加載工程。舉個例子: class Customers(Base): __table__ = Table('Customers', Base.meta

    2熱度

    1回答

    我有一個類對象cls。我想知道它的元類。我該怎麼做呢? (?如果我想知道它的父類,我會做cls.__mro__有沒有這樣的事情來獲得元類)

    2熱度

    1回答

    通常情況下,子類一類我這樣做 class Subby(Parenty): def __init__(self): Parenty.__init__(self) 但現在我想繼承元類,具體ABCMeta,所以我在做 import ABCMeta class Subby(ABCMeta): def __init__(self): ABCMeta.__i

    0熱度

    2回答

    我正在考慮使用元類自動將子類添加到父項以進行「鏈接」。但是,從父類繼承這些屬性會造成問題。有沒有一種很好的方法來避免這種情況? class MetaError(type): def __init__(cls, name, bases, attrs): for base in bases: setattr(base, name, cls) super(

    1熱度

    2回答

    從我所瞭解的關於Python面向對象的編程中,如果一個類已經定義了__call__方法,如果我們像使用函數調用一樣使用類的實例,就會調用該方法。例如: class Employee: def __init__(self,name,sal): self.name = name self.salary = sal def __call__(self,valu

    0熱度

    1回答

    我試圖讓我的頭繞着元類,但我仍然不能真正理解它的概念。 據我所知: 任何類本身類型的「類型」的一個實例 - 因此「呼叫」一類的只是調用它的類中的方法__call__ - 這恰好是類型的__call__。的type.__call__的效果是完全:上類似的代碼: A類: 通 B = A() 的步驟的順序我知道這裏是: 1. type.__call__接收A類本身作爲其第一個參數。 它調用A.__new

    2熱度

    1回答

    類 Nonify場我有一個任務: 貫徹元類「ModelCreator」,即允許聲明類 字段的格式如下: class Student(object): __metaclass__ = ModelCreator name = StringField() 凡StringField - 一些對象表示,這個字段是 文本字段。所以必須有一個類,它的構造函數接收相應的屬性( 類型檢查和鑄

    0熱度

    1回答

    我有我認爲是一個非常簡單的問題,但一直沒能找到滿意的答案。簡而言之,我想在父級的子類上執行合約,而不向每個子類添加邏輯。下面的代碼示例: class A(object): @abc.abstractmethod def do_thing(self, input): raise NotImplementedError class A1(A): def

    0熱度

    1回答

    看看下面的例子 class Base(type): def __init__(cls, name, bases, dict_): print 'Base.__init__() with cls %s, name %s...' % (cls, name,) type.__init__(cls, name, bases, dict_) M = Base('M',