> (...) it is said that Python class system is more flexible than other languages' OOP, even Lisp CLOS.
Who says this? Python does expose a bit of the plumbing of its class/object system - but I can't recall seeing anyone calling it especially powerful or flexible?
I don't think I've seen anyone argue for any object system being strictly more flexible/powerful than CLOS.
Some, like smalltalk, ruby, Dylan or Javascript original prototype based object system might be useful, simpler subsets of CLOS - and might so arguably be "better".
Afaik much of the problem with python has to do with the language being quite dynamic, and also somewhat complex scope handling.
"I don't think I've seen anyone argue for any object system being strictly more flexible/powerful than CLOS."
I guess I'd argue that SK8's object system was more flexible and powerful than CLOS. It was an extension of CLOS in Macintosh Common Lisp, implemented with support from low-level modifications in MCL's CLOS implementation.
It added, among other things, persistent objects, constraints, truth-maintenance, and several extensions to CLOS' method combinations and before, after, and around methods.
SK8 supported multiple simultaneous inheritance architectures. I don't mean multiple inheritance, though it did support that. I mean that SK8 supported more than one inheritance architecture at the same time in the same set of objects. It offered support for user-defined inheritance architectures, and support for defining inheritance relationships along multiple different inheritance graphs in the same object at the same time.
In other words, a single given object could inherit structure from one set of parents according to one set of inheritance rules, and behavior from another set of parents according to another set of rules, and truth-maintenance constraints from another set of parents according to another set of rules, and containment-related properties according to another set of parents according to another set of rules, and so forth. It provided APIs for constructing and supporting additional user-defined inheritance architectures.
SK8 supported both class-based and prototype-based inheritance at the same time, with more than one inheritance model active at the same time for different purposes.
SK8 was originally designed as a knowledge-representation system--a frame language in the sense of https://en.wikipedia.org/wiki/Frame_(artificial_intelligence.... Other frame languages and systems (e.g. KEE and KL-ONE and CycL) share similar features. Indeed, if I remember right, SK8's creator, Ruben Kleiman, worked on Cyc before he created MacFrames, which later became SK8.
I guess, strictly speaking, these object-system features were features of the frame language, MacFrames, and SK8 was the authoring application that was built on MacFrames.
Would be great if we could get a somewhat stable version of SK8 running in an emulator. I tried to do this last year and couldn't get it to work right. But, of course, I was never a SK8 user and had no idea what I was doing.
Agreed. For reference, you probably want System 8, which was current around 1997, when SK8 0.9 was released, and a powermac G3 model or emulation of it from around that time.
Who says this? Python does expose a bit of the plumbing of its class/object system - but I can't recall seeing anyone calling it especially powerful or flexible?
I don't think I've seen anyone argue for any object system being strictly more flexible/powerful than CLOS.
Some, like smalltalk, ruby, Dylan or Javascript original prototype based object system might be useful, simpler subsets of CLOS - and might so arguably be "better".
Afaik much of the problem with python has to do with the language being quite dynamic, and also somewhat complex scope handling.