11.3 توابع المثيل
أهداف التعلم
في نهاية هذا القسم، ينبغي أن تكون قادرًا على:
- إنشاء وتطبيق الدالّة
__init__()مع مُعامِلات متعددة، بما في ذلك قيم المُعامِلات الافتراضية. - وصف المعلومات التي يمكن لتابع المثيل الوصول إليها وتعديلها.
المزيد عن الدالّة __init__()
في Python، الدالّة __init__() هي التابع الخاص الذي ينشئ المثيلات. ينبغي أن تحتوي الدالّة __init__() على المثيل المستدعي، self، كأول مُعامِل، ويمكن أن تحتوي على أي عدد من المُعامِلات الأخرى بقيم افتراضية للمُعامِلات أو بدونها.
مفاهيم تطبيقية
تعريف واستخدام الدالّة __init__() مع المُعامِلات
تأمل المثال أعلاه.
توابع المثيل
يُستخدم تابع المثيل للوصول إلى سمات المثيل وسمات الصنف وتعديلها. جميع التوابع المعروضة حتى الآن، ومعظم التوابع المُعرَّفة في تعريف الصنف، هي توابع مثيلات.
مثال 11.1
غالبًا ما تُستخدم توابع المثيل للحصول على معلومات المثيل وتعيينها
class ProductionCar:
def __init__(self, make, model, year, max_mph = 0.0):
self.make = make
self.model = model
self.year = year
self.max_mph = max_mph
def max_kmh(self):
return self.max_mph * 1.609344
def update_max(self, speed):
self.max_mph = speed
car_1 = ProductionCar('McLaren', 'Speedtail', 2020) # car_1.max_mph تساوي 0.0
car_1.update_max(250.0) # car_1.max_mph تساوي 250.0
print(car_1.make, car_1.model, 'reaches', car_1.max_mph, 'mph (',
car_1.max_kmh(), 'km/h)') # تطبع: McLaren Speedtail reaches 250.0 mph (402.336 km/h)
مفاهيم تطبيقية
توابع المثيل CoffeeOrder
تأمل المثال أدناه:
class CoffeeOrder:
loc = 'Cafe Coffee'
cls_id = 1
def __init__(self, size=16, milk=False, sugar=False):
self.order_id = CoffeeOrder.cls_id
self.cup_size = size
self.with_milk = milk
self.with_sugar = sugar
CoffeeOrder.cls_id += 1
def change(self, milk, sugar):
self.with_milk = milk
self.with_sugar = sugar
def print_order(self):
print(CoffeeOrder.loc,'Order', self.order_id, ':', self.cup_size, 'oz')
if self.with_milk:
print('\twith milk')
if self.with_sugar:
print('\twith sugar')
order_1 = CoffeeOrder(8)
order_2 = CoffeeOrder(8, True, False)
order_1.change(False, True)
جرّب بنفسك
إنشاء صنف لآلات البيع
اكتب صنفًا، VendingMachine، كما هو موضح أدناه. القيم الافتراضية تتبع السمات. مثال: القيمة الافتراضية لـ count هي 0. أنشئ آلة بيع باستخدام قيمة مقروءة من الإدخال واستدعِ توابع المثيل.
سمات المثيل:
- count: 0
- max: 0
التوابع:
__init__(num): تهيئ count و max باستخدام المُعامِل numrefill(): تُسندcountبقيمةmaxوتطبع"Refilled"sell(order): تُسندcountبقيمةcountمطروحًا منهاorderوتطبع"Sold: [order]"print_stock(): تطبع"Current stock: [count]"
الإدخال المُعطى:
100
25
الإخراج هو:
Current stock: 100
Sold: 25
Current stock: 75
Refilled
Current stock: 100