• 1400/07/26

self در بخش شی گرایی :

استاد self  چی رو برای ما برمیگردونه؟ اگه میشه یک توضیح مختصر و ساده برای من بدید

 

  • 1400/07/27
  • ساعت 17:13

در واقع این بخش در فیلم توضیح دادند استاد اما اگر بخوام بگم دقیقا چی رو بر میگردونه self همان instance است که توضیحات مفصلی دارد و با سه خط قابل توضیح نیستند


  • 1400/07/27
  • ساعت 20:23

با سلام.

 

از self برای اشاره به نمونه (instance) های یک class استفاده می شود.

با استفاده از آن به Attribute ها و Method های کلاس دسترسی خواهید داشت. 

در واقع Attribute ها را با Argument های داده شده مرتبط می کند (Bind). 

self باید همیشه به عنوان اولین Argument وارد شود و بعد سایر آرگومانها قرار گیرند.

class Car():
 
    # init method or constructor
    def __init__(self, car_name, car_model):
        self.name = car_name
        self.model = car_model
     
    def show(self):
        print("Car Name: ", self.name)
        print("Model: ", self.model )
 
car1 = Car("BMW", "2021")
car2 = Car("Mercedes", "S-Class 2021")
 
car1.show()
car2.show()

 

# Output:

Car Name:  BMW
Model:  2021
Car Name:  Mercedes
Model:  S-Class 2021

 

مثلا در نمونه ی فوق،  self.name به car_name اصطلاحاً bind شده است.

هنگامی که object ی از کلاس cars می سازیم (مثلا car1)، در درون کلاس، اولاً تخصیص دهی مقادیر نام و مدل در متد init صورت گرفته و بوسیله ی متد show و استفاده از self می گوییم که هر گاه نمونه ای (object ای)  از این کلاس ساخته شد، چگونه نام و مدل آن آنرا نمایش دهد.

 

self یک Convention (قرارداد) در Python است و نه یک Keyword یعنی می توانید به جای self مثلاً test یا هر چیز دیگری قرار دهید. اما برای خوانایی بیشتر کدها و رعایت قوانین Clean Code بهتر است از self استفاده کنید.

 

class Not_Using_Self:
    def show(test):
        print("Change self to test,"
        "You can use a different word!")
 
object = Not_Using_Self()
object.show()

 

# Output:

Change self to test, You can use a different word!

در مثال فوق نیز به جای self از کلمه  test استفاده کردیم و نتیجه مثل استفاده از self است.

البته می دانم که توضیحاتم خیلی کامل نیست اما امیدوارم که با مفهوم self ارتباط بیشتری برقرار کرده باشید.

 

موفق باشید.