Barak, Ron wrote:
When I try the following (to see the types of the classes involved): #!/usr/bin/env python import wx from Debug import _line as line class CopyAndPaste(object): def __init__(self, *args, **kwargs): super(CopyAndPaste, self).__init__(*args, **kwargs) print line()+". type(wx.Frame):",type(wx.Frame) print line()+". type(object):",type(object) I get: $ python -u CopyAndPaste.py 9. type(wx.Frame): <type 'type'> 10. type(object): <type 'type'> And I don't understand what it means...
The default metaclass is named 'type'. It it the class of all builtin classes and all user classes (3.0) that do not specify otherwise. Behind the scenes, new user classes are created as instances of 'type' by the equivalent of 'type(name, bases, class_dict)'. What is possibly confusing is that the __call__ method of 'type' also allows calls to type with only one arg, in which case it returns the class of the arg instead of trying to create a new class. And so one might mistakenly think that 'type' is a built-in function rather than a class.
Terry Jan Reedy -- http://mail.python.org/mailman/listinfo/python-list