• Barry Warsaw's avatar
    Committing PEP 232, function attribute feature, approved by Guido. · d6a9e84c
    Barry Warsaw yazdı
    Closes SF patch #103123.
    
    funcobject.h:
    
        PyFunctionObject: add the func_dict slot.
    
    funcobject.c:
    
        PyFunction_New(): Initialize the func_dict slot to NULL.
    
        func_getattr(): Rename to func_getattro() and change the
        signature.  It's more efficient to use attro methods and dig the C
        string out than it is to re-convert a C string to a PyString.
    
        Also, add support for getting the __dict__ (a.k.a. func_dict)
        attribute, and for getting an arbitrary function attribute.
    
        func_setattr(): Rename to func_setattro() and change the signature
        for the same reason.  Also add support for setting __dict__
        (a.k.a. func_dict) and any arbitrary function attribute.
    
        func_dealloc(): Be sure to DECREF the func_dict slot.
    
        func_traverse(): Be sure to traverse func_dict too.
    
        PyFunction_Type: make the necessary func_?etattro() changes.
    
    classobject.c:
    
        instancemethod_memberlist: Add __dict__
    
        instancemethod_setattro(): New method to set arbitrary attributes
        on methods (really the underlying im_func).  Raise TypeError when
        the instance is bound or when you're trying to set one of the
        reserved im_* attributes.
    
        instancemethod_getattr(): Renamed to instancemethod_getattro()
        since that's what it really is.  Also, added support fo getting
        arbitrary attributes through the im_func.
    
        PyMethod_Type: Do the ?etattr{,o} dance.
    d6a9e84c
funcobject.h 1.17 KB