مشخصه های کلاس و متد ___ str ___ چیست ؟
مشخصه های کلاس و متد ___ str ___ چیست ؟
بهمنظور چاپ شیءهاي Card ،آن هم به صورتیکه هر کس بتوانـد آنهـا را بـه راحتـی بخوانـد، لازم است کدهایی صحیح (integer (به کلمات نگاشت شوند. یک راه طبیعی براي انجام این کار اسـتفاده از لیستهایی از رشتهها است. ما در قسمت ابتداي تعریف کلاس، ایـن لیسـتهـا را بـه مشخصـه هـاي کلاس نسبت میدهیم:
class Card:
suitList = [“Clubs”, “Diamonds”, “Hearts”, “Spades”]
rankList = [“narf”, “Ace”, “2”, “3”, “4”, “5”, “6”, “7”,
“8”, “9”, “10”, “Jack”, “Queen”, “King”]#init method omitted
def __str__(self):
return (self.rankList[self.rank] + ” of ” +
self.suitList[self.suit])
درون __str __ما میتوانیم از suitList و rankList جهت نگاشتن مقـادیر عـددي suit و rank به رشته استفاده کنیم. براي نمونه عبارت [suit.self[suitList.self به این معنی است که: «مشخصۀ suit از شیء self را به عنوان اندیسی در مشخصۀ کلاسی به نام suitList بهکار ببر و رشتۀ متناظر را انتخاب کن.» علت وجود “narf “در اولین عنصر rankList ،نگه داشتن محل صـفرمین عنصـر لیسـت است که هرگز استفاده نمیشود. تنها رتبه هاي معتبر، 1 تا 13 هستند. این قلم دادة هرز کاملاً ضـروري نیست. ما میتوانستیم از 0 شروع کنیم، اما رمزگذاري 2 به عنوان 2 و 3 به عنـوان 3 و … ،کمتـر گـیج کننده است. با متدهایی که تاکنون داشتهایم میتوانیم کارتها را بسازیم و چاپ کنیم:
>> card1 = Card(1, 11)
>>> print card1
Jack of Diamonds
مشخصه هاي کلاس، همچون suitList با تمام اشیاء Card در اشتراکند. مزیـت ایـن خاصـیت آن است که میتوانیم هر شیء Card را براي دسترسی به مشخصههاي کلاس به کار ببریم:
>>> card2 = Card(1, 3)
>>> print card2
3 of Diamonds
>>> print card2.suitList[1]
Diamonds
عیب این روش آن است که اگر ما یک مشخصۀ کلاس را تغییر دهیم، بر روي تمـام وهلـههـاي کلاس اثر میگذارد. براي مثال، اگر تصمیم بگیریم که کارت “JacksofsDiamonds ،”از این پس “Whales JacksofsSwirly “خوانده شود، میتوانیم به این صورت عمل کنیم:
>>> card1.suitList[1] = “Swirly Whales”
>>> print card1
Jack of Swirly Whales
مشکل آن است که تمام Diamondsها به Whales Swirly تبدیل میشوند:
>>> print card2
3 of Swirly Whales
این کار معمولاً ایدة خوبی براي تغییر مشخصههاي کلاس نیست.
برای اموزش های ویدیویی زبان پایتون به بستر ویدیو های اموزشی بروید