آموزش شی گرایی پایتون: کلاس، شی، وراثت و سازنده با مثال
در این مطلب با ۴ موضوع کلیدی برنامه نویسی پایتون یعنی کلاس، شی، وراثت و سازنده با کمک مثال هایی به زبان ساده آشنا می شوید.
کلاس چیست؟
کلاس یک گروه منطقی از داده ها و توابع است. به ایجاد ساختارهای داده ای که حاوی محتوای دلخواه هستند آزادی می دهد و از این رو به راحتی در دسترس اند.
به عنوان مثال ، برای هر کارمند بانکی که می خواهد جزئیات مشتری را به صورت آنلاین واکشی کند ، به کلاس مشتری می رود که در آن تمام ویژگی های آن مانند جزئیات معامله ، جزئیات برداشت و سپرده ، بدهی های معوق و غیره ذکر شده است.
در این آموزش ، یاد خواهیم گرفت:
- نحوه تعریف کلاس های پایتون
- نحوه کار وراثت
- سازندگان پایتون
نحوه تعریف کلاس های پایتون
برای تعریف کلاس باید نکات زیر را در نظر بگیرید
مرحله ۱) در پایتون کلاس ها با کلمه کلیدی “class” تعریف می شوند.
class myClass():
مرحله ۲) در داخل کلاس ها می توانید توابع یا متدهایی را تعریف کنید که بخشی از کلاس هستند.
def method1 (self):
print “Guru99”
def method2 (self,someString):
print “Software Testing:” + someString
- در اینجا method1 را تعریف کردیم که عبارت”Guru99″ را چاپ می کند.
- متد دیگری که تعریف کردیم ، method2 است که “Software Testing” + someString را چاپ می کند. SomeString متغیری است که با فراخوانی متد دریافت می شود.
مرحله ۳) همه چیز در کلاس تورفتگی دارد ، دقیقا مانند کد موجود در تابع ، حلقه ، شرطif و غیره. هر چیزی که تورفتگی نداشته باشد در کلاس نیست.
توجه: در مورد استفاده از “self” در پایتون
- آرگومان self به خود شیء اشاره دارد. از این رو از کلمه self استفاده می شود. بنابراین در درون این متد ، self به نمونه خاص این شیء که روی آن کار می شود ، اشاره خواهد کرد.
- Self نامی است که توسط پایتون برای نشان دادن اولین پارامتر متد های نمونه ترجیح داده می شود. این بخشی از نحو پایتون برای دسترسی به اعضای اشیاء است.
مرحله ۴) ساختن شیء از کلاس
c = myClass()
مرحله ۵) فراخوانی متد در کلاس
c.method1()
c.method2(” Testing is fun”)
- توجه کنید که وقتی method1 یا method2 را صدا می زنیم ، لازم نیست کلمه کلیدی self را بنویسیم چون به طور خودکار توسط runtime پایتون اداره می شود.
- فقط باید به آرگومان های non-self اهمیت دهید.
مرحله ۶) کد کامل در اینجا است.
# Example file for working with classes
class myClass():
def method1(self):
print(“Guru99”)
def method2(self,someString):
print(“Software Testing:” + someString)
def main():
# exercise the class methods
c = myClass ()
c.method1()
c.method2(” Testing is fun”)
if __name__== “__main__”:
main()
نحوه کار وراثت
وراثت ویژگی ای است که در برنامه نویسی شی گرا مورد استفاده قرار می گیرد. این به تعریف یک کلاس جدید با تغییر کم یا بدون تغییر از کلاس موجود اطلاق می شود. کلاس جدید کلاس مشتق شده نام دارد و کلاسی که از آن ارث می برد پایه نامیده می شود. پایتون از ارث بری پشتیبانی می کند. همچنین از ارث بری متعدد پشتیبانی هم می کند. یک کلاس می تواند ویژگی ها و متد های رفتاری را از کلاس دیگری به نام زیر کلاس یا کلاس وارث به ارث ببرد.
ساختار ارث بری پایتون
class DerivedClass(BaseClass):
body_of_derived_class
مرحله ۱) کد زیر را اجرا کنید.
# Example file for working with classes
class myClass():
def method1(self):
print(“Guru99”)
class childClass(myClass):
#def method1(self):
#myClass.method1(self);
#print (“childClass Method1”)
def method2(self):
print(“childClass method2”)
def main():
# exercise the class methods
c2 = childClass()
c2.method1()
#c2.method2()
if __name__== “__main__”:
main()
توجه کنید که در childClass ، method1 تعریف نشده است اما از والد myClass ارث بری کرده است. خروجی آن “Guru99” است.
مرحله ۲) خط ۸ و ۱۰ را از کامنت خارج کرده و کد را اجرا کنید.
اکنون method1 در childClass تعریف شده است و خروجی “childClass Method1” به درستی نشان داده می شود.
مرحله ۳) خط ۹ را از کامنت خارج کرده و کد را اجرا کنید.
با استفاده از ساختار زیر می توانید از متد کلاس والدین استفاده کنید.
ParentClassName.MethodName(self)
در این نمونه، myClass.method1(self) را صدا می زنیم و Guru99 مطابق انتظار چاپ می شود.
مرحله ۴) خط ۱۹ را از کامنت خارج کرده و کد را اجرا کنید.
Method2 کلاس فرزند صدا زده می شود و “childClass method2” همانطور که انتظار می رود چاپ می شود.
سازنده های پایتون
سازنده یک تابع کلاس است که یک شیء را با مقادیر از پیش تعریف شده مقدار دهی می کند.
با دو تا (_) شروع می شود. این متد __init() __ است.
در مثال زیر از کاربر با استفاده از سازنده نام می بریم.
class User:
name = “”
def __init__(self, name):
self.name = name
def sayHello(self):
print(“Welcome to Guru99, ” + self.name)
User1 = User(“Alex”)
User1.sayHello()
خروجی برابر خواهد بود با:
Welcome to Guru99, Alex
مثال پایتون ۲
در بالا کد ها مثال های پایتون ۳ هستند ، اگر می خواهید در پایتون ۲ اجرا کنید ، لطفا کد زیر را در نظر بگیرید.
# How to define Python classes
# Example file for working with classes
class myClass():
def method1(self):
print “Guru99”
def method2(self,someString):
print “Software Testing:” + someString
def main():
# exercise the class methods
c = myClass ()
c.method1()
c.method2(” Testing is fun”)
if __name__== “__main__”:
main()
#How Inheritance works
# Example file for working with classes
class myClass():
def method1(self):
print “Guru99”
class childClass(myClass):
#def method1(self):
#myClass.method1(self);
#print “childClass Method1”
def method2(self):
print “childClass method2”
def main():
# exercise the class methods
c2 = childClass()
c2.method1()
#c2.method2()
if __name__== “__main__”:
main()
خلاصه:
کلاس یک گروه بندی منطقی از توابع و داده ها است. کلاس پایتون تمام ویژگی های استاندارد برنامه نویسی شی گرا را ارائه می دهد.
- مکانیسم ارث بری کلاس
- کلاس مشتق شده هر متد کلاس پایه خود را override می کند.
- یک متد می تواند متد کلاس پایه را با همین نام فراخوانی کند.
- کلاس های پایتون توسط کلمه کلیدی “class” تعریف می شوند.
- در داخل کلاس ها می توانید توابع یا متد هایی را تعریف کنید که جزئی از کلاس هستند.
- همه چیز در کلاس تو رفتگی دارد ، دقیقاً مانند کد موجود در تابع ، حلقه ، شرط if و غیره.
- آرگومان self در پایتون به خود شیء اشاره دارد. Self نامی است که توسط پایتون برای نشان دادن اولین پارامتر متد های نمونه در پایتون استفاده می شود.
- در پایتون ، یک کلاس می تواند ویژگی ها و متد های رفتاری را از کلاس دیگری به نام زیر کلاس یا وارث به ارث ببرد.
با سلام
پاسخبرای ایجاد کلاس مثلث جهت محاسبه همزمان مساحت و محیط دو تابع را در برنامه به این صورت نوشتم اما نمیدانم به چه علت متد محیط اجرا میشه ولی متد مساحت کا بر اساس فرمول باید مقدار خود محیط هم فراخوانی کنم اجرا نمیشه ،ممنون میشم راهنمایی کنید
:Class Triangle
:def__ init__(self,a,b,c)
self.a=a
self.b=b
self.c=c
:def enviroment(self)
return self.a+self.b+self.c/2
:def area(self)
return enviroment×(enviroment_self.a)×(enviroment_self.b)×(enviroment_self.c)^0.5