Mam klasy o nazwie Factor
w module Factor.py
(https://github.com/pgmpy/pgmpy/blob/dev/pgmpy/factors/Factor.py), a także mieć funkcję o nazwie factor_product
w Factor.py
jak:Dziwne zachowanie funkcji isinstance
def factor_product(*args):
if not all(isinstance(phi, Factor) for phi in args):
raise TypeError("Input parameters must be factors")
return functools.reduce(lambda phi1, phi2: _bivar_factor_operation(phi1, phi2,
operation='M'), args)
Teraz gdybym nawet przechodzić wystąpień Factor
do funkcji, nadal rzuca TypeError
. Kilka linii od debuggera z punktem przerwania tuż nad instrukcją if:
(Pdb) args
args = (<pgmpy.factors.Factor.Factor object at 0x7fed0faf76a0>, <pgmpy.factors.Factor.Factor object at 0x7fed0faf7da0>)
(Pdb) isinstance(args[0], Factor)
False
(Pdb) type(args[0])
<class 'pgmpy.factors.Factor.Factor'>
(Pdb) Factor
<class 'pgmpy.factors.Factor.Factor'>
Czy masz pomysł, dlaczego tak się dzieje?
dzikie domysły: czy kiedykolwiek nazywasz 'przeładowanie'? – Eevee
@Eevee: Ah .. Używałem rozszerzenia 'reload' dla ipythona. Wielkie dzięki. –