<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های Abolfazl salmanpoor</title><link>https://virgool.ir/feed/@m_38274827</link><description></description><language>fa</language><pubDate>2026-11-11 08:41:15</pubDate><image><url>https://virgool.ir/images/default-avatar.jpg</url><title>Abolfazl salmanpoor</title><link>https://virgool.ir/@m_38274827</link></image><item><title>Inheritance in Python</title><link>https://virgool.ir/@m_38274827/inheritance-in-python-xt2i4vj1m9fg</link><description>هر کلاسی می تواند یک کلاس والد باشد بنابراین سینتکس ایجاد آن مانند همه کلاس های دیگر است.مثال: در این مثال یک کلاس با نام Person با دو خصوصیت firstname و lastname و یک متد با نام printname ایجاد کرده ایم.class Person:  def __init__(self, fname, lname):    self.firstname = fname    self.lastname = lname  def printname(self):    print(self.firstname, self.lastname)#Use the Person class to create an object, and then execute the printname method:x = Person(&#34;John&#34;, &#34;Doe&#34;)x.printname()ایجاد یک کلاس فرزند (Child Class)برای ایجاد یک کلاس که قابلیت های یک کلاس دیگر را به ارث ببرد، هنگام ایجاد کلاس فرزند، کلاس پدر را به عنوان یک پارامتر به آن ارسال می کنیم.مثال: در این مثال یک کلاس با نام Student را ایجاد کرده که تمام قابلیت های کلاس Person را به ارث می برد.class Student(Person):  passحال کلاس Student همه متدها و خصوصیات کلاس Person را دارد.مثال: در این مثال از کلاس Student یک شی ایجاد می کند و سپس متد printname را که از متدهای کلاس Person است اجرا می کند.x = Student(&#34;Mike&#34;, &#34;Olsen&#34;)x.printname()افزودن تابع ()__init__تا این جای کار کلاس فرزند را ایجاد کردیم که خصوصیات و متدهای کلاس والد را به ارث می برد.در این جا ما می خواهیم تابع ()__init__ را به کلاس فرزند (به جای کلمه کلیدی pass) اضافه کنیم.نکته: همانطور که قبلا هم گفتیم هر بار که کلاس برای ایجاد یک شی استفاده می شود، تابع ()__init__ به طور خودکار فراخوانی می شود.مثال: در این مثال تابع ()__init__ را به کلاس Student اضافه می کنیم.class Student(Person):  def __init__(self, fname, lname):    #add properties etc.copyوقتی که تابع ()__init__ را اضافه کنیم، کلاس فرزند دیگر تابع ()__init__ کلاس والد را به ارث نمی برد.توجه: تابع ()__init__ کلاس فرزند وراثت تابع ()__init__ کلاس والد را لغو می کند.برای حفظ وراثت تابع ()__init__ کلاس والد یک فراخوان به تابع ()__init__ والد اضافه می کنیم.مثال: در مثال زیر این مساله به طور واضح نشان داده شده است.class Student(Person):  def __init__(self, fname, lname):    Person.__init__(self, fname, lname)استفاده از تابع ()superپایتون همچنین دارای یک تابع به نام ()super است که باعث می شود کلاس فرزند تمام متدها و خصوصیت های کلاس والد را به ارث ببرد.مثال: در این مثال برای ارث بری از کلاس والد از تابع ()super استفاده کرده ایم.class Student(Person):  def __init__(self, fname, lname):    super().__init__(fname, lname)افزودن متدشرح این موضوع را نیز مانند بحث افزودن خصوصیت با ذکر مثالی برای شما شرح می دهیم.مثال: در این مثال متدی با نام Welcome را به کلاس Student اضافه می کنیم.class Student(Person):  def __init__(self, fname, lname, year):    super().__init__(fname, lname)    self.graduationyear = year  def welcome(self):    print(&#34;Welcome&#34;, self.firstname, self.lastname, &#34;to the class of&#34;, self.graduationyear)</description><category>Abolfazl salmanpoor</category><author>Abolfazl salmanpoor</author><pubDate>Wed, 09 Aug 2023 13:33:37 +0330</pubDate></item><item><title>MRO in Python</title><link>https://virgool.ir/@m_38274827/mro-in-python-ak2gwszbgp7z</link><description>در پایتون، MRO از پایین به بالا و از چپ به راست است. این بدان معنی است که ابتدا متد در کلاس شی جستجو می شود. اگر پیدا نشد، در کلاس فوق‌العاده فوری جستجو می‌شود. در مورد چندین کلاس فوق العاده، به ترتیبی که توسط توسعه دهنده اعلام شده است، از چپ به راست جستجو می شود. مثلا:def class C(B, A)Note: We are using Python 3.10.4 in this Answer.در این مورد، MRO C -&gt; B -&gt; A خواهد بود. از آنجایی که B ابتدا در اعلان کلاس ذکر شد، ابتدا در هنگام حل یک متد جستجو می شود.بیایید به چند مورد، از ساده تا پیچیده، نگاه کنیم.این یک مورد ساده با ارث واحد است. در این مورد، وقتی b.method() فراخوانی می شود، ابتدا متد را در کلاس B جستجو می کند. در این مورد، کلاس B متد را تعریف کرده بود. از این رو، آن است که اعدام شد. در صورتی که در B وجود نداشته باشد، متد از کلاس فوق العاده آن (A) فراخوانی می شود. بنابراین، MRO برای این مورد: B -&gt; استMRO برای این می تواند کمی مشکل باشد. سوپرکلاس فوری برای D C است، بنابراین اگر متد در D یافت نشد، در C جستجو می شود. اما اگر در C یافت نشد، باید تصمیم بگیرید که آیا باید A را بررسی کنید (اول در اعلان شده است). لیستی از کلاس های فوق العاده C) یا علامت B (در لیست فوق کلاس های D بعد از C اعلام شده است). در پایتون 3 به بعد، با بررسی اول A حل می شود. بنابراین، MRO تبدیل به:</description><category>Abolfazl salmanpoor</category><author>Abolfazl salmanpoor</author><pubDate>Wed, 09 Aug 2023 13:27:12 +0330</pubDate></item></channel></rss>