مقدمه
در درس قبل، با اصول اولیه تعریف یک کلاس و ساخت نمونه از آن آشنا شدیم. اکنون که میتوانید یک کلاس
بسازید و از آن نمونهبرداری کنید، آمادهاید تا با جزئیات بیشتری در مورد کار با اتریبیوتها و
متدها آشنا شوید. در این درس، ما کلاس Car را به عنوان مثال اصلی خود در نظر گرفته و قابلیتهای
مختلف آن را قدم به قدم تکمیل خواهیم کرد.
تنظیم یک مقدار پیشفرض برای یک اتریبیوت
هر اتریبیوت در یک کلاس نیاز به یک مقدار اولیه دارد. این مقدار میتواند از طریق یک پارامتر در متد
__init__() تنظیم شود، یا میتوان یک مقدار پیشفرض را مستقیماً در داخل سازنده برای آن
تعریف کرد. این کار باعث میشود که دیگر نیازی به پاس دادن آن مقدار هنگام ساخت نمونه نباشد.
PYTHON
class Car:
"""A simple attempt to represent a car."""
def __init__(self, make, model, year):
"""Initialize attributes to describe a car."""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def read_odometer(self):
"""Print a statement showing the car's mileage."""
print(f"This car has {self.odometer_reading} miles on it.")
my_new_car = Car('audi', 'a4', 2024)
my_new_car.read_odometer()
در این مثال، ما یک اتریبیوت جدید به نام odometer_reading اضافه کردهایم که مقدار اولیه آن
همیشه 0 است.
این کار تضمین میکند که هر نمونه جدید از کلاس Car با یک کیلومترشمار صفر شروع به کار میکند و
ما دیگر نیازی به پاس دادن این مقدار اولیه هنگام ساخت نمونه نداریم.
تغییر مقادیر اتریبیوتها
شما میتوانید مقدار یک اتریبیوت را پس از ساخت نمونه، به روشهای مختلفی تغییر دهید.
۱. تغییر مقدار به صورت مستقیم
سادهترین راه، دسترسی مستقیم به اتریبیوت از طریق نمونه و تخصیص یک مقدار جدید به آن است.
PYTHON
my_new_car = Car('audi', 'a4', 2024)
my_new_car.read_odometer()
my_new_car.odometer_reading = 23
my_new_car.read_odometer()
در اینجا ما مستقیماً مقدار odometer_reading را به 23 تغییر دادهایم. این روش ساده است،
اما همیشه بهترین گزینه نیست، زیرا به هر کدی اجازه میدهد تا مقدار اتریبیوت را بدون هیچ کنترلی
تغییر دهد.
۲. تغییر مقدار از طریق یک متد
یک روش بهتر و کنترلشدهتر، نوشتن یک متد اختصاصی برای بهروزرسانی مقدار یک اتریبیوت است. این کار
به شما اجازه میدهد تا منطق اعتبارسنجی را در داخل کلاس کپسولهسازی کنید.
PYTHON
def update_odometer(self, mileage):
"""
Set the odometer reading to the given value.
Reject the change if it attempts to roll the odometer back.
"""
if mileage >= self.odometer_reading:
self.odometer_reading = mileage
else:
print("You can't roll back an odometer!")
my_new_car.update_odometer(23_500)
my_new_car.read_odometer()
my_new_car.update_odometer(23_000)
اکنون، هر تلاشی برای کم کردن مقدار کیلومترشمار رد میشود و یک پیام خطا چاپ میشود. این روش کنترل
بیشتری بر روی نحوه تغییر اتریبیوتهای کلاس به ما میدهد.
۳. افزایش مقدار یک اتریبیوت از طریق یک متد
ما همچنین میتوانیم متدهایی بنویسیم که به جای تنظیم یک مقدار جدید، مقدار فعلی یک اتریبیوت را
افزایش دهند.
PYTHON
def increment_odometer(self, miles):
"""Add the given amount to the odometer reading."""
self.odometer_reading += miles
my_new_car.increment_odometer(100)
my_new_car.read_odometer()
این متد به ما اجازه میدهد تا به راحتی مقداری را به کیلومترشمار اضافه کنیم، بدون اینکه نیاز به
خواندن مقدار فعلی و جمع کردن آن به صورت دستی داشته باشیم.
در این درس، با روشهای مختلف کار با اتریبیوتها در کلاسها و نمونهها آشنا شدیم. دیدیم که چگونه
میتوان مقادیر پیشفرض تعریف کرد و چگونه با استفاده از متدهای سفارشی، تغییر مقادیر را به صورت
کنترلشده مدیریت کرد. در درس بعدی، به سراغ یکی از قدرتمندترین مفاهیم شیءگرایی، یعنی «درک مفهوم
وراثت» خواهیم رفت.