অবজেক্ট-ওরিয়েন্টেড অ্যাপ্রোচ
অর্ডারের প্রয়োজনীয়তা প্রতিটি ক্ষেত্রে অন্তর্ভুক্ত করার পরিবর্তে শ্রেণীর একটি সম্পত্তি যুক্ত করার জন্য অবজেক্ট বাছাইয়ের যুক্তি তৈরি করা ভাল অনুশীলন make
এটি ধারাবাহিকতা নিশ্চিত করে এবং বয়লারপ্লেট কোডের প্রয়োজনীয়তা সরিয়ে দেয়।
সর্বনিম্ন, আপনার এটি নির্দিষ্ট করতে __eq__
এবং __lt__
কাজ করতে অপারেশন করা উচিত । তারপরে শুধু ব্যবহার করুন sorted(list_of_objects)
।
class Card(object):
def __init__(self, rank, suit):
self.rank = rank
self.suit = suit
def __eq__(self, other):
return self.rank == other.rank and self.suit == other.suit
def __lt__(self, other):
return self.rank < other.rank
hand = [Card(10, 'H'), Card(2, 'h'), Card(12, 'h'), Card(13, 'h'), Card(14, 'h')]
hand_order = [c.rank for c in hand] # [10, 2, 12, 13, 14]
hand_sorted = sorted(hand)
hand_sorted_order = [c.rank for c in hand_sorted] # [2, 10, 12, 13, 14]