Mae mía, ni en python 2.6.x ni en php 5.x se pueden escribir clases con contructores multiples, como se hace con toda normalidad en C# por ejemplo. Hace tiempo pensé un par de trucos parecidos para cuando estoy con lenguajes con esta particularidad y que me gustaría compartir, pero vamos que hay mil formas de hacerlo.
Python:
class Clase():
_id=None</code>
def __init__(self,*args):
if len(args) != 1:
if isinstance(args[0], str):
self.__constructor_uno (int(args[0]))
else:
self.__constructor_dos()
def __constructor_uno(self, id):
self._id=id
def __constructor_dos(self):
self._id=0
_id=None</code>
def __init__(self,*args):
if len(args) != 1:
if isinstance(args[0], str):
self.__constructor_uno (int(args[0]))
else:
self.__constructor_dos()
def __constructor_uno(self, id):
self._id=id
def __constructor_dos(self):
self._id=0
PHP:
class Clase {</code>
private $id;
function __construct() {
$args = func_get_args();
$nargs = func_num_args();
switch($nargs) {
case 1:
self::__constructor_uno($args[0]);
break;
case 2:
self::__constructor_dos();
break;
}
}
function __constructor_uno($get) {
$id=$get;
}
function __constructor_dos() {
$id=0;
}
}
private $id;
function __construct() {
$args = func_get_args();
$nargs = func_num_args();
switch($nargs) {
case 1:
self::__constructor_uno($args[0]);
break;
case 2:
self::__constructor_dos();
break;
}
}
function __constructor_uno($get) {
$id=$get;
}
function __constructor_dos() {
$id=0;
}
}