제공된 객체의 속성을 변환하기 위해 매우 긴 if/elif 블록을 포함하는 메소드가 있습니다. 두 가지 방법을 사용하지 않아도됩니다. 메서드가 반복 가능한 목록 또는 반복 불가능한 단일 개체를 사용할 수있는 경우 개체가 반복 가능하지 않은 경우 if/elif 블록을 계속 실행하려면 어떻게해야합니까?옵션 For 절을 사용하여 Python DRY를 준수하는 가장 좋은 방법
는 지금 내 코드는 기본적으로 다음과 같습니다
def convert_orders(orders, orderid=None):
"""Converts certain fields of an order object to readable and/or indexable values"""
status = None
color = None
order = None
converted = []
if not orders:
order = session.query(Order).filter(Order.orderid == orderid)
for order in orders:
# convert order status to a string and give it a color for the tables
if order.status == 0:
status = 'In Progress'
color = QColor(150, 255, 250)
elif order.status == 1:
status = 'Ready'
color = QColor(60, 255, 75)
# elif continues below for another 70+ lines, converting other attributes.
orders
경우가 목록으로 제공되지만,이 방법은 또한 내가 중 하나를 변환하는 단 하나 개의 elif 블록을 사용하는 방법을 orderid
(정수)를 취할 수 어떤 유형이 제공되는지에 따라 유형이 달라질 수 있습니까? 이 메소드는 한 유형 또는 다른 유형으로 호출되지만 둘 다 사용되지는 않습니다.
가장 쉬운 방법은'orders'가 반복 가능해야한다는 것입니다. 'convert_orders (my_one_order)'대신에 싱글 톤리스트'convert_orders ([my_one_order])'의 문제점은 무엇입니까? – chepner