Mario Figueiredo wrote:
An instance of an object is capable of doing so, per its
class definitions. Whereas a Python class object is not.
>>> class Master:
def func(self):
pass
>>> class Sub(Master):
pass
>>> Sub.func()
TypeError: func() missing 1 required positional argument: 'self'
But Sub is not an *instance* of Master here, it's
a *subclass* of Master, which is quite a different
thing:
>>> Sub.__class__
<class 'type'>
To make Sub be an *instance* of Master, you need to
do this. (NOTE: This is Python 3 syntax; the same
thing can be done in Python 2, but the syntax is
slightly different.)
>>> class Master(type):
... def func(self):
... print("func of", self, "called")
...
>>> class Sub(metaclass = Master):
... pass
...
>>> Sub.__class__
<class '__main__.Master'>
>>> Sub.func()
func of <class '__main__.Sub'> called
So, you see, Python classes *can* participate in OOP
just as fully as any other object. You just need to
know how to do it correctly.
--
Greg
--
https://mail.python.org/mailman/listinfo/python-list