کلاس ها و آبجکت ها
کلاس ها پایه و اساس زبان های برنامه نویسی شی گرا مثل پایتون هستن. یک کلاس به سادگی یک قالب جهت ایجاد آبجکت ها هست. در کلاس ها خاصیت های مختلف یک آبجکت رو تعریف کرد و کار هایی که قراره با اون آبجکت انجام بشه رو مشخص کرد. تا اینجا در این کارگاه شما با کلاس های ارائه شده توسط کتابخونه های استاندارد پایتون یا حتی خود پایتون سروکار داشتید. برای مثال در مثال ۳۷: دریافت تاریخ سیستم از فصل ۳ - اجرای برنامه ی پایتون: برنامه ها، الگوریتم ها و توابع، از کلاس datetime برای دریافت تاریخ کنونی استفاده کردیم. در این فصل هم اول با کلاس هایی که در حال حاضر ازشون استفاده میکنیم شروع میکنیم. این کار رو میشه در شل پایتون (python shell) یا نوت بوک ژوپیتر انجام داد.
یک آجکت integer به نام x در کنسول پایتون ایجاد کنید:
>>> x = 10
>>> x
10
میتونید کلاسی که x ازش ایجاد شده بود رو با کال کردن فانکشن type ببینید:
>>> type(x)
<class 'int'>
کلاس integer فقط به شما اجازه ایجاد یک عدد نمیده و آبجکت x ما ویژگی های دیگه ای هم داره:
>>> x.bit_length()
4
این متد تعداد رقم های باینری مورد نیاز برای نشون دادن x به عنوان یک عدد باینری (1010) رو محاسبه میکنه.
همونطور که در فصل ۳ - اجرای برنامه ی پایتون: برنامه ها، الگوریتم ها و توابع یاد گرفتید، میتونیم docstring آبجکتمون رو برای خوندن و دریافت راهنمایی در مورد این آبجکت و کلاس اون استفاده کنیم:
>>> print(x.__doc__)
int([x]) -> integer
int(x, base=10) -> integer
Convert a number or string to an integer, or return 0 if no arguments
are given. If x is a number, return x.__int__(). For floating point
numbers, this truncates towards zero.
If x is not a number or if base is given, then x must be a string,
bytes, or bytearray instance representing an integer literal in the
given base. The literal can be preceded by '+' or '-' and be surrounded
by whitespace. The base defaults to 10. Valid bases are 0 and 2-36.
Base 0 means to interpret the base from the string as an integer literal.
>>> int('0b100', base=0)
4
توضیحات طولانی براتون برمیگردونه که پاراگراف اولشو براتون ترجمه میکنیم: تبدیل یک عدد یا استرینگ به یک integer، یا در صورتی که هیچ آرگیومنتی داده نشه برگردوندن مقدار 0. اگه x یک عدد باشه، ()__x.__int برگردونده میشه. برای اعداد اعشاری در صورت کال شدن int ارقم اعشار عدد حذف میشن.
پس همونطور که اینجا میبینید حتی ساده ترین آبجکت ها در پایتون، مثل استرینگ ها، خاصیت ها و متد های جالبی دارن که میشه ازشون برای دریافت اطلاعاتی در مورد آبجکت یا انجام یه سری محاسبات با آبجکت استفاده کرد. وقتی به یه جایی در برنامه نویسی میرسید که بخواید رفتار این متد ها رو شخصی سازی کنید، یا در کل یک آبجکت جدید بسازید، باید کلاس های خودتون رو بنویسید. برای مثال ممکنه به جای یک آبجکت استرینگ به یک آبجکت name نیاز داشته باشید که یک استرینگ به عنوان خاصیت اصلیش داشته باشه و دارای متد هایی باشه که به شما اجازه میدن تا اون اسم رو به زبان های دیگه ترجمه کنید.