کلاس(Class) و آبجکت (Object)
مبنای اصلی object-oriented programming در تمام زبانهای برنامهنویسی classها هستند. یک class صرفا یک قالب ( template ) برای ساخت object هاست. classها ویژگیهای ( properties ) مختلف object را تعریف میکنند و مشخص میکنند که چه کارهایی را میتوان با object انجام داد. مثلا datetime را که در فصل 3و 4 دیدیم، یک class است که زمان ( date + time ) را به صورت یک object باز میگرداند. بیاید یک object از یک کلاس دیگر را که قبلا بارها استفاده کردهایم را بررسی کنیم:
x = 10
x
# 10 بیایید با تابع type نوع متغیر x را ببینیم:
type(x)
# <class 'int'> میبینید که x از نوع class int است. این class فقط برای ذخیرهی عدد استفاده نمیشود و الان object ما یعنی x چندین ویژگی ( property ) نیز دارد. مثلا:
x.bit_length()
# 4 متد bit_length تعداد digitهای باینری ( binary یا مبنای 2 یا دو دویی) x یعنی تعداد ارقام 1010 را باز میگرداند.
کد مشاهدهی docstring این class را نیز ببینید:
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 حتی سادهترین objectها در Python نیز propertyها و methodهای جالب و زیادی دارند که با استفاده از آنها میتوانیم به اطلاعات بیشتری در مورد آنها دست پیدا کنیم یا روی آنها عملیات و محاسبات ( پردازش یا computation ) انجام دهیم. وقتی قصد تغییر و توسعهی رفتارها، propertyها و methodهای objectها را داشته باشیم، باید classهای خودمان را برای این کار بنویسیم. پایهی داستان ما در مورد OOP از اینجا شروع میشود!