Эй, ребята, у меня проблемы с оператором if в python, над которым я работаю.Я упростил код для этого вопроса, поскольку суть проблемы остается прежней, и это облегчает понимание: допустим, я создал два класса, один для яблок и один для бананов.Их атрибуты в основном одинаковы (название, цвет и цена).
class Apple:
def __init__(self, name, color, price):
self.name = name
self.color = color
self.price = price
A1=Apple("Apple1", "red", 5)
A2=Apple("Apple2", "yellow", 3)
Apple_List=[A1, A2]
class Banana:
def __init__(self, name, color, price):
self.name = name
self.color = color
self.price= price
B1=Banana("Banana1","yellow", 5)
B2=Banana("Banana2", "brown", 1)
Banana_List=[B1,B2]
Пока все хорошо.Я хотел определить метод для класса бананов, который должен сначала проверить, является ли цена банана такой же, как для одного из яблочных объектов.Если это так, банан должен взять на себя имя этого яблока (опять же, в этом коде нет никакого смысла, но это актуально для реального проекта, над которым я работаю).Во-вторых, метод должен проверять, имеет ли банан тот же цвет, что и у одного из яблочных объектов, и затем принимать это название яблока (я использовал для этого утверждение elif).Вот как выглядит метод:
def evaluate(self):
for a in Apple_List:
if self.price==a.price:
self.name=a.name
elif self.color==a.color:
self.name=a.name
else:
pass
print(self.name)
Теперь, когда я пытаюсь запустить этот код с Banana1, в результате я получаю «Apple2», даже если цена Banana1 такая же, как у Apple1, и поэтому должна бытьназванный "Apple1".Похоже, оператор elif выполняется перед оператором if, поскольку Banana1 имеет тот же цвет, что и Apple2, и принимает его имя.Но не должен ли оператор if иметь приоритет над оператором elif?Извините, если есть очевидное решение этой проблемы, я очень плохо знаком с программированием на Python.Заранее спасибо за помощь!Вот полный код:
class Apple:
def __init__(self, name, color, price):
self.name = name
self.color = color
self.price = price
A1=Apple("Apple1", "red", 5)
A2=Apple("Apple2", "yellow", 3)
Apple_List=[A1, A2]
class Banana:
def __init__(self, name, color, price):
self.name = name
self.color = color
self.price= price
def evaluate(self):
for a in Apple_List:
if self.price==a.price:
self.name=a.name
elif self.color==a.color:
self.name=a.name
else:
pass
print(self.name)
B1=Banana("Banana1","yellow", 5)
B2=Banana("Banana2", "brown", 1)
Banana_List=[B1,B2]
B1.evaluate()