Vraag Wat doet Python's ingebouwde __build_class__?


In Python 3.1 is er een nieuwe ingebouwde functie die ik niet ken in de builtins module:

__build_class__(...)
    __build_class__(func, name, *bases, metaclass=None, **kwds) -> class

    Internal helper function used by the class statement.

Wat doet deze functie? Waarom moet het in gebouwen zijn als het intern is? Wat is het verschil met de type(name, bases, dict) functie?


18
2017-12-02 13:42


oorsprong


antwoorden:


Compileren van de PEP 3115 metaclass

Guido van Rossum zei:

De PEP stelt voor de klas   statement accepteert zoekwoordargumenten,    *args, en **kwds syntaxis evenals positionele bases. Dit is een beetje rommelig   compileren en uitvoeren, maar we al   heb dit natuurlijk in de code voor   normale functies aanroepen.

Dus ik denk dat het acceptabel is   dit in een oproep naar een nieuwe (verborgen)   ingebouwde functie, genaamd    __build_class__. Dan is deze klassedefinitie:

  class C(A, B, metaclass=M, other=42, *more_bases, *more_kwds):
    ...

zou in dit vertalen:

  C = __build_class__(<func>, 'C', A, B, metaclass=M, other=42,
*more_bases, *more_kwds)

waar <func> is een functieobject voor   het klaslokaal.


19
2017-12-02 13:44