Differences with Python
py.js completely ignores old-style classes as well as their lookup details. All py.js types should be considered matching the behavior of new-style classes
This may change if py.js ever reimplements its object model from scratch.
A python-level function (created through :js:class:`py.PY_def`) set on a new type will not become a method, it'll remain a function.
:js:func:`py.PY_parseArgs` supports keyword-only arguments (though it's a Python 3 feature)
These are Python features which are not supported at all in py.js, usually because they don't make sense or there is no way to support them
- The __delattr__, __delete__ and __delitem__: as py.js only handles expressions and these are accessed via the del statement, there would be no way to call them.
- __del__ the lack of cross-platform GC hook means there is no way to know when an object is deallocated.
- __slots__ are not handled
- Dedicated (and deprecated) slicing special methods are unsupported
These are Python features which are missing because they haven't been implemented yet:
- Class-binding of descriptors doesn't currently work.
- Instance and subclass checks can't be customized
- "poor" comparison methods (__cmp__ and __rcmp__) are not supported and won't be falled-back to.
- __coerce__ is currently supported
- Context managers are not currently supported
- Unbound methods are not supported, instance methods can only be accessed from instances.