پارامتر self (self Parameter)
«پارامتر self» اشاره به «نمونه فعلی کلاس» دارد. یعنی همین شیء. با self می توانی به «ویژگی ها (Properties)» و «متدها (Methods)» دسترسی بگیری. مثل وقتی در بازی، تنظیمات کاراکترِ خودت را تغییر می دهی.
پارامتر self چیست؟
self همیشه اولین پارامترِ متدهای کلاس است. سپس با self به ویژگی ها دسترسی داریم.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
print("Hello, my name is " + self.name)
p1 = Person("Emil", 25)
p1.greet()
نکته: پارامتر self باید همیشه اولین پارامترِ هر متد باشد.
چرا از self استفاده کنیم؟
بدون self پایتون نمی فهمد کدام شیء مدنظر است. self متد را به شیء وصل می کند.
class Person:
def __init__(self, name):
self.name = name
def printname(self):
print(self.name)
p1 = Person("Tobias")
p2 = Person("Linus")
p1.printname()
p2.printname()
اسم self اجباری نیست
می توانی اسم دیگری بگذاری. اما عرف همان self است و خوانایی را بالا می برد.
class Person:
def __init__(myobject, name, age):
myobject.name = name
myobject.age = age
def greet(abc):
print("Hello, my name is " + abc.name)
p1 = Person("Emil", 36)
p1.greet()
نکته: بهتر است همان self را استفاده کنی تا کد قابل فهم بماند.
دسترسی به ویژگی ها با self
با self هر ویژگی را می خوانی یا چاپ می کنی. این کار دقیق است.
class Car:
def __init__(self, brand, model, year):
self.brand = brand
self.model = model
self.year = year
def display_info(self):
print(f"{self.year} {self.brand} {self.model}")
car1 = Car("Toyota", "Corolla", 2020)
car1.display_info()
فراخوانی متدها با self
داخل یک متد، می توانی متد دیگر را با self صدا بزنی. این کار تمیز است.
class Person:
def __init__(self, name):
self.name = name
def greet(self):
return "Hello, " + self.name
def welcome(self):
message = self.greet()
print(message + "! Welcome to our website.")
p1 = Person("Tobias")
p1.welcome()
گام های عملی
- یک کلاس بساز و self را به عنوان پارامتر اول بگذار.
- ویژگی ها را با self داخل __init__ مقداردهی کن.
- یک متد بنویس و با self ویژگی را چاپ کن.
- متد دیگری بساز و متد قبلی را با self صدا بزن.
مطالعه بعدی
اول صفحه کلاس ها/اشیا را بخوان. سپس سازنده کلاس (__init__) را یاد بگیر. برای مرور، از لینک پارامتر self استفاده کن.
جمع بندی سریع
- self یعنی همین شیءِ فعلی.
- اولین پارامتر هر متد است.
- با self به ویژگی ها دسترسی داری.
- اسمش قابل تغییر است؛ اما self بهتر است.