mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
* Lots of small changes related to access.
* Added "access *: ...", made access work for class methods. * Introduced subclass check: make sure that when calling ClassName.methodname(instance, ...), the instance is an instance of ClassName or of a subclass thereof (this might break some old code!)
This commit is contained in:
parent
81daa32c15
commit
b3f7258f14
7 changed files with 112 additions and 49 deletions
|
@ -50,5 +50,6 @@ int setaccessvalue PROTO((object *, object *, object *));
|
|||
|
||||
void setaccessowner PROTO((object *, object *));
|
||||
object *cloneaccessobject PROTO((object *));
|
||||
int hasaccessvalue PROTO((object *));
|
||||
|
||||
extern typeobject Anynumbertype, Anysequencetype, Anymappingtype;
|
||||
|
|
|
@ -24,11 +24,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|||
|
||||
/* Class object interface */
|
||||
|
||||
/*
|
||||
Classes are really hacked in at the last moment.
|
||||
It should be possible to use other object types as base classes,
|
||||
but currently it isn't. We'll see if we can fix that later, sigh...
|
||||
*/
|
||||
/* Revealing some structures (not for general use) */
|
||||
|
||||
typedef struct {
|
||||
OB_HEAD
|
||||
|
@ -37,6 +33,12 @@ typedef struct {
|
|||
object *cl_name; /* A string */
|
||||
} classobject;
|
||||
|
||||
typedef struct {
|
||||
OB_HEAD
|
||||
classobject *in_class; /* The class object */
|
||||
object *in_dict; /* A dictionary */
|
||||
} instanceobject;
|
||||
|
||||
extern typeobject Classtype, Instancetype, Instancemethodtype;
|
||||
|
||||
#define is_classobject(op) ((op)->ob_type == &Classtype)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue