A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2000-October/010086.html below:

[Python-Dev] A small step to removing the type/class split

[Python-Dev] A small step to removing the type/class splitNeil Schemenauer nas@arctrix.com
Tue, 24 Oct 2000 04:56:11 -0700
I've run into a problem with ExtensionClass which I believe can
only be fixed by modifying Python.  I will try to explain.

I have an ExtensionClass which defines __cmp__.  Depending on the
objects being compared, the __cmp__ method may never be called.
This is due to code in object.c that looks like this:

    if (PyInstance_Check(v) || PyInstance_Check(w)) {
        try to use use __cmp__ method
    }
    else {
        try number coerce and fall back on type name comparison
    }

Extension classes can never pass the PyInstance_Check predicate.
I've searched for all occurances of PyInstance_Check in the 2.0
source.  In many places that PyInstance_Check occurs a more
general "is this an instance-like type" check would seem to be
more suitable.

Here is my proposal:

  * Define a new type flag Py_TPFLAGS_INSTANCE.
  * Create a new predicate Py_IsInstance which checks for this
    flag.
  * Set this flag on PyInstance_Type.
  * Replace most occurances of PyInstance_Check with
    Py_IsInstance.

Extension types (like ExtensionClass) can then define the type
flag Py_TPLAGS_INSTANCE and be treated as an instance type by the
Python interpreter.  This should make it quite a bit easier to make
extension types behave like "real" classes.

Comments?

  Neil



RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4