Mam dziwny problem. Wywołuję tę samą metodę przeciwko instancjom klasy i działają dobrze. Ale gdzieś na linii uruchamiania programów tracę odniesienie do obiektu i teraz pokazuje, że zamiast tego próbuję wywołać moją klasę. Oto, co widzę w debugerze dla dobrego połączenia:

<Move.Move object at 0x0000000003F362E8> (odniesienie do obiektu)

Ale później po prostu dostanę

<Move.Move class> (odniesienie do klasy)

Jak czasami tracę odwołanie do obiektu i zamiast tego otrzymuję odwołanie do klasy.

Słynne ostatnie słowa. Sprawdziłem swój kod z plikami zmian i nie widzę żadnych zmian w tym obszarze.

Wszelkie przemyślenia i sugestie są mile widziane.

Kod zgodnie z żądaniem. Mam nadzieję, że to pomoże.

for move in moves:
    if move.targetStack is not None:
        t = t+1
        bestMove = move #Just need to have one to compare to

if t==0:
    break
try:
    for move in moves:
        if move.targetStack is None:
            continue
        elif move.highCard.rank > bestMove.highCard.rank:

P.S. Zamiast tego wywołuje AttributeError. Ale ma tę samą przyczynę odwoływania się do klasy Move, a nie do instancji. Działa przez około 6 pełnych cykli przed zerwaniem.

0
Peter Breyfogle 20 listopad 2019, 07:15
Trudno odgadnąć, co się dzieje bez pokazywania, jak wywołujesz funkcję i jak wygląda Twoja klasa. Krótko mówiąc, potrzebujesz Minimalnego, powtarzalnego przykładu
 – 
smac89
20 listopad 2019, 07:20

1 odpowiedź

Znalazłem mój problem. To była kwestia kapitalizacji. W moich przypadkach było to przypisanie w Move (nazwie klasy) zmiennej bestMove. Czasami brakuje mi języków bezpiecznych dla pisania!

0
Peter Breyfogle 20 listopad 2019, 20:35