شباهتها و تفاوتهای کلاسها در پایتون و سیپلاسپلاس:
1. تعریف کلاس:
- در پایتون: تعریف کلاس با استفاده از کلیدواژه class انجام میشود.
- در سیپلاسپلاس: تعریف کلاس با استفاده از کلیدواژه class و نوع داده (مانند struct یا class) انجام میشود.
2. متدها:
- در پایتون: متدها به صورت self به عنوان اولین پارامتر خود را دریافت میکنند.
- در سیپلاسپلاس: متدها به صورت explicit به عنوان یک عضو از کلاس تعریف میشوند و نیازی به self ندارند.
3. وراثت:
- در پایتون: وراثت چندگانه پشتیبانی میشود.
- در سیپلاسپلاس: وراثت چندگانه پشتیبانی میشود.
4. کلاسهای انتزاعی:__
- در پایتون: از طریق ارث بری چندگانه و تعریف کلاسهای abstract امکانپذیر است.
- در سیپلاسپلاس: از طریق ارث بری چندگانه و تعریف کلاسهای abstract امکانپذیر است.
5. متغیرها:
- در پایتون: نوع متغیرها به صورت پویا تعیین میشود.
- در سیپلاسپلاس: نوع متغیرها به صورت static و constant تعیین میشود.
(Constructors and Destructors):
پایتون: سازنده با متد __init__ تعریف میشود و مخرب با متد __del__ (که به ندرت استفاده میشود).
C++: سازنده و مخرب به طور صریح تعریف میشوند
انواع تابع های قابل تعریف:
توابع نمونه (Instance Methods):این توابع به نمونهای خاص از کلاس تعلق دارند و اولین پارامتر آنها معمولاً self است که به شیء فعلی اشاره دارد.
توابع کلاس (Class Methods):این توابع به کلاس تعلق دارند و اولین پارامتر آنها clsاست که به خود کلاس اشاره دارد. با استفاده از دکوریتور@classmethod تعریف میشوند.
توابع ایستا (Static Methods):این توابع به کلاس یا نمونه خاصی تعلق ندارند و نیازی به self یا cls ندارند. با استفاده از دکوریتور @staticmethod تعریف میشوند.
توابع خصوصی (Private Methods):این توابع فقط داخل همان کلاس قابل دسترسی هستند و با دو زیرخط (__) شروع میشوند.
توابع عضو (Member Functions):این توابع به نمونهای خاص از کلاس تعلق دارند و به اعضای کلاس دسترسی دارند
توابع عضو ثابت (Const Member Functions):این توابع اعضای کلاس را تغییر نمیدهند و با کلمه کلیدی const مشخص میشوند.
توابع عضو استاتیک (Static Member Functions):این توابع به نمونه خاصی تعلق ندارند و با کلمه کلیدی static مشخص میشوند.
توابع مجازی (Virtual Functions):این توابع میتوانند در کلاسهای فرزند بازنویسی شوند و با کلمه کلیدی virtual مشخص میشوند.
توابع خصوصی (Private Member Functions):این توابع فقط داخل همان کلاس قابل دسترسی هستند و در بخش private تعریف میشوند.
در این توابع نوع های مشترک نیز بین پایتون و c++هست که ما میتوانیم از مشترکین به این ها توجه کنیم:
توابع نمونه (Instance Methods) در پایتون و توابع عضو (Member Functions) در C++
توابع کلاس (Class Methods) در پایتون و توابع عضو استاتیک (Static Member Functions) در C++
توابع ایستا (Static Methods) در پایتون و توابع عضو استاتیک (Static Member Functions) در C++
{بنابراین، توابع عضو استاتیک در C++ هم شباهت به توابع کلاس در پایتون دارند (زیرا میتوانند به دادهها و متدهای سطح کلاس دسترسی داشته باشند) و هم به توابع ایستا در پایتون (زیرا به نمونه خاصی از کلاس تعلق ندارند)}
توابع خصوصی (Private Methods) در پایتون و توابع خصوصی (Private Member Functions) در C++
پایتون و C++ هر دو از کلاسها و شیءگرایی پشتیبانی میکنند، اما نحوه پیادهسازی و استفاده از این مفاهیم در این دو زبان تفاوتهای قابل توجهی دارد. پایتون با سینتکس سادهتر و سطح بالاتری که دارد، استفاده از کلاسها را آسانتر میکند.