پایتون برای همه | 31 | آبجکت و متد

پایتون برای همه پایتون 3
پیام مدیر: تولید محتوای خوب، نیاز به زمان، تخصص، و انرژی دارد و در یک کلام هزینه‌بر است. ما در ایلولا با نگارش، گردآوری و یا ترجمه‌ی دست اول مطالب از منابع موثق و قابل اتکاء، تلاش می‌کنیم تا محتوایی ارزشمند را عرضه کنیم. از طریق باکس انتهای مقاله، در صورت پسندیدن آن، می‌توانید آن را بخرید (در صورت استطاعت مالی) یا برای دوستی ارسال کنید. امیدواریم که از مقاله لذت ببرید!

عملگر in

کلمه‌ی in یک عملگر بولی است که دو رشته را می‌گیرد و True را اگر رشته‌ی اول به عنوان قسمتی از رشته‌ی دوم باشد، برمی‌گرداند.

>>> 'a' in 'banana'
True
>>> 'seed' in 'banana'
False

مقایسه رشته

عملگرهای مقایسه بر روی رشته‌ها نیز عمل می‌کنند. اگر می‌خواهید ببینید که دو رشته با هم برابرند:

if word == 'banana':
    print('All right, bananas.')

بقیه‌ی عملگرهای مقایسه برای مرتب کردن کلمات بر اساس الفبا می‌توانند کمک بزرگی به شما باشند:

if word < 'banana':
    print('Your word,' + word + ', comes before banana.')
elif word > 'banana':
    print('Your word,' + word + ', comes after banana.')
else:
    print('All right, bananas.')

رفتار مردم در مقایسه با پایتون در خصوص حروف بزرگ و کوچک متفاوت است. در پایتون تمام حروف بزرگ پیش از تمام حروف کوچک می‌آید:

Your word, Pineapple, comes before banana.

یک راه‌حل رایج برای این مساله استفاده از قالب استاندارد است. مثلا می‌توانید تمام حروف را به حروف کوچک تبدیل کنید و سپس عملیات را بر روی آن انجام دهید.

متدهای رشته (string)

رشته‌ها یک مثال از آبجکت‌های پایتون به شمار می‌روند. یک آبجکت (شئ) شامل داده و متدها می‌شود. متد، توابعی است که در آبجکت به صورت توکاری‌شده قرار داده شده‌اند و برای تمام نمونه‌های آن آبجکت در دسترسند.

پایتون یک تابعی با نام dir دارد که لیست متدهای موجود در یک آبجکت را به نمایش می‌گذارد. تابع type نوع یک آبجکت را نشان می‌‌دهد و تابع dir متدهای موجود در آن آبجکت را.

>>> stuff = 'Hello world'
>>> type(stuff)
<class 'str'>
>>> dir(stuff)
['capitalize', 'casefold', 'center', 'count', 'encode',
'endswith', 'expandtabs', 'find', 'format', 'format_map',
'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit',
'isidentifier', 'islower', 'isnumeric', 'isprintable',
'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower',
'lstrip', 'maketrans', 'partition', 'replace', 'rfind',
'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip',
'split', 'splitlines', 'startswith', 'strip', 'swapcase',
'title', 'translate', 'upper', 'zfill']
>>> help(str.capitalize)
Help on method_descriptor:

capitalize(...)
    S.capitalize() -> str

    Return a capitalized version of S, i.e. make the first character
    have upper case and the rest lower case.
>>>

تابع dir لیست متدها را نشان می‌دهد و در کنارش تابع help اطلاعات و اسناد ساده‌ای از یک متد را به نمایش می‌گذارد. اطلاعات بهتر از متدهای رشته را می‌توانید از اینجا بخونید:

لینک سند

فراخوانی یک متد، به مانند فراخوانی یک تابع است، یعنی متد هم آرگیومنت را می‌گیرد و مقداری را برمی‌گرداند؛ ولی متنِ این فراخوانی متفاوت است. برای فراخوانی متد، نامِ آن را به نام متغیر با یک نقطه بینشان می‌چسبانیم.

به عنوان مثال متد upper یک رشته را می‌گیرد و رشته‌ای جدید که تمام حروفش بزرگ است را برمی‌گرداند.

به جای استفاده از متن تابع که به صورت upper(word)‎ است، ما از متن مخصوص متد یعنی word.upper()‎ استفاده می‌کنیم.

>>> word = 'banana'
>>> new_word = word.upper()
>>> print(new_word)
BANANA

این قالب که به آن «نمادِ نقطه» می‌گوییم، نام متد، upper، و نام رشته را مشخص کرده و متد را بر روی آن (در مثال ما متغیر word) اعمال می‌کند. پرانتزهای خالی به این معنی‌ست که این متد هیچ آرگیومنتی را دریافت نمی‌کند.

فراخوانی یک متد، invocation یا «احضار» خوانده می‌شود. در این مثال، ما می‌گوییم که upper را بر روی word احضار کردیم.

برای مثال، یک متد رشته به اسم find وجود دارد که جایگاه یک رشته را در یک رشته‌ی دیگر جستجو می‌کند:

>>> word = 'banana'
>>> index = word.find('a')
>>> print(index)
1

در این نمونه، ما find را بر روی word احضار کرده و حرفی که در پی آن بودیم را به صورت پارامتر برایش فرستادیم.

متد find قادر به پیدا کردنِ زیررشته‌ها به مانند کاراکترهاست:

>>> word.find('na')
2

این متد می‌تواند آرگیومنت دوم را نیز دریافت کرده تا بداند که جستجو را از چه مکانی شروع کند:

>>> word.find('na', 3)
4

یک کار شایع و رایج از بین بردن فاصله‌های خالی (فاصله یا tab یا خطوط جدید) از ابتدا و انتهای یک رشته با استفاده از متد strip است:

>>> line = '  Here we go  '
>>> line.strip()
'Here we go'

برخی متدها مثل startswith مقدارهای بولی را برمی‌گردانند:

>>> line = 'Have a nice day'
>>> line.startswith('Have')
True
>>> line.startswith('h')
False

خواهید فهمید که متد startswith به بزرگی و کوچکی حروف حساس است، به همین خاطر شاید بد نباشد که کل یک خط را گرفته و حروفش را به حروف کوچک تبدیل کرده و سپس بررسی را بر روی آن انجام دهید:

>>> line = 'Have a nice day'
>>> line.startswith('h')
False
>>> line.lower()
'have a nice day'
>>> line.lower().startswith('h')
True

در مثال آخر، متد lower احضار شده و سپس از متد startswith استفاده کرده‌ایم. به این صورت متد startswith بر روی رشته‌ی جدید که تمام حروفش کوچک است عملیات را انجام می‌دهد. اگر مراقب ترتیبِ متدها باشید، حتی می‌توانید چند متد را به صورت ترکیبی در تنها یک عبارت احضار کنید:

>>> line = 'Have a nice day'
>>> line.startswith('h')
False
>>> line.lower().startswith('h')
True
>>> 

تمرین ۴: یک متد رشته‌ به نام count وجود دارد که شبیه به تابعی که در مثال قبل نوشتیم عمل می‌کند. اسناد مرتبط با این متد را از لینک زیر بخوانید و سپس یک احضاریه بنویسد که تعداد تکرارِ حرف a در banana را برگرداند.

لینک سند

این نوشته تحت مجوز کرییتیو کامنز BY – NC و حمایت موسسه تحقیقاتی رامونا ارائه می‌شود. شما می‌توانید با توجه به مفاد این گواهی از آن استفاده کنید.

نوشته را پسندیدید؟ در صورت تمایل از طریق دکمه پرداخت آنلاین (درگاه امن زرین‌پال)، مقاله‌ای که خواندید را به مبلغ ۱۵۰۰ تومان بخرید. بعد از پرداخت به نشان قدردانی به صفحه‌ی دانلود PDFهای ایلولا هدایت می‌شوید و دسترسی یک ماهه به آن خواهید داشت. در کنار نسخه‌ی PDF مقالات ویژه که به مرور بر تعدادشان افزوده می‌شود، یک کتابچه هدیه نیز تقدیم حضورتان خواهد شد. ایلولا، به احترام بازدیدکنندگان، از تبلیغات استفاده نمی‌کند و با تکیه بر فروش مقالات اداره می‌شود.

اولین نفری باشید که نظر می‌گذارد

پاسخ دهید

ایمیل شما نمایش داده نخواهد شد