Mario Figueiredo wrote: > In article <mailman.18191.1422400930.18130.python-l...@python.org>, > n...@nedbatchelder.com says... >> >> A common mistake is to believe that "OOP" is a well-defined term. It's >> not it's a collection of ideas that are expressed slightly differently >> in each language. > > A common mistake is thinking just because OOP has different > implementations, it doesn't have a cohesive set of well described rules > and its own well defined terminology.
Alas, this is not a mistake. As I posted in a reply to Ben, OOP does not have a cohesive set of rules and well-defined terminology. >> I don't know what a "not fully realized object" is. > > A fully realized object, in an object oriented paradigm, is an object > containing or pointing to data and the methods to act on that data. It's > an instance of a class. In Python, classes meet that definition too. A class in Python is a value which can contain data (or point to data), and it has methods which act on that data. Classes in Python themselves have a class, which we call the metaclass, and classes inherit behaviour from their class just as integer instances inherit behaviour from their class, int. > A *not* fully realized object is possible in Python, since Classes are > first-class objects, despite not being able to participate in OOP. > >> >> What does "participate in OOP" mean? > > Means the object is capable of participating in inheritance and/or > polymorphism. An instance of an object is capable of doing so, per its > class definitions. Whereas a Python class object is not. Class objects are capable of participating in inheritance. A class can have multiple metaclasses. They can even have multiple inheritance of metaclasses. I'm not sure what relevance polymorphism has. -- Steven -- https://mail.python.org/mailman/listinfo/python-list