I can't inherit from "compiled" classes ?

Marc 'BlackJack' Rintsch bj_666 at gmx.net
Sun Apr 29 16:03:52 EDT 2007


In <mailman.7093.1177876116.32031.python-list at python.org>, Maxim Veksler
wrote:

> Hello list,
> 
> I'm trying to subclass socket and select, for both I get:
> """ TypeError: Error when calling the metaclass bases
>     module.__init__() takes at most 2 arguments (3 given) """, I don't
> understand this error. Why would python try to pass 3 arguments (what
> are they) ?
> 
> Googling for this error gave random results talking about try to
> inherit a "Package" but socket is definitely a class,
> (/usr/lib/python2.4/socket.py). Not sure about select thought.
> 
> I've did the following to receive the error:
> """
> In [1]: import socket
> 
> In [2]: class PollingSocket(socket):
>    ...:     pass
>    ...:
> ---------------------------------------------------------------------------
> exceptions.TypeError                                 Traceback (most
> recent call last)
> 
> /home/hq4ever/<ipython console>
> 
> TypeError: Error when calling the metaclass bases
>     module.__init__() takes at most 2 arguments (3 given)
> """
> 
> 
> What am I breaking wrong?

You are trying to subclass a module here, just like the error message
says.  The module contains a `socket` type:

In [3]: import socket

In [4]: type(socket)
Out[4]: <type 'module'>

In [5]: type(socket.socket)
Out[5]: <type 'type'>

`select.select()` is a function:

In [6]: import select

In [7]: type(select.select)
Out[7]: <type 'builtin_function_or_method'>

Ciao,
	Marc 'BlackJack' Rintsch



More information about the Python-list mailing list