Странный эффект, который я испытываю, заключается в том, что выходные данные программы ниже зависит от значения Orange. Интересно, получают ли другие пользователи то же самое, но я получаю прокомментированный вывод ниже в зависимости от значения Orange. Я получаю один и тот же результат в 100% случаев. Кто-нибудь знает, что здесь происходит и/или как получить согласованный вывод, который не будет зависеть от значения Orange (потому что я хотел бы вставить код отладки вместо Orange и не менять вывод)
Код: Выделить всё
import numpy as np
class Banana(object):
def __init__(self, label):
self.label = label
def __repr__(self):
return 'Banana(label={})'.format(self.label)
class Apple(object):
def __init__(self):
self._bananas = {1:set()}
def add_banana(self, banana: "Banana"):
self._bananas[1].add(banana)
@property
def print_bananas(self) -> list["Banana"]:
result = set()
for banana in self._bananas.values():
result |= banana
return list(result)
Lemon = 11
for i in range(10):
Orange = 4
A = Apple()
B1 = Banana(1)
B2 = Banana(2)
B3 = Banana(3)
A.add_banana(B1)
A.add_banana(B2)
A.add_banana(B3)
print(A.print_bananas[0].label)
#result with Orange = 5: 3,3,2,1,2,3,3,2,1,2
#result with Orange = 4: 3,3,3,1,2,3,3,3,1,2
Примечание: воспроизвести такое поведение было довольно сложно, кажется, что оно происходит только для определенных значений Lemon и/или Orange, и возможно, зависит от вашей системы, если и когда оно появится. Для меня странное поведение проявляется как в Windows 11, так и в Linux Mint (с немного разными выводами). Результаты в Анаконде всегда казались случайными, и для одного из рецензентов они всегда были одинаковыми для Дарвина.
Подробнее здесь: https://stackoverflow.com/questions/790 ... m-a-set-in