Anophel-آنوفل مجیک متد یا داندر متد در پایتون

مجیک متد یا داندر متد در پایتون

انتشار:
0

Magic Methods یا Dunder Methods که به صورت فارسی می شود متد های جادویی و منظور از داندر(Dunder) دو تا آندر لاین(__) می باشد. که در شی گرایی پایتون در دسترس هستند. مجیک متد ها یک سری متد ها هستند که در کلاس ها می توانید به آن ها دسترسی پیدا کتید که در هر کدام از این مجیک متدها برایمان یک کار خاصی انجام می دهند که در ادامه با آن آشنا خواهیم شد.در پایتون مجیک متد هایی مثل : __init__ و __str__ و __add__ و .. وجود دارد.

 

اگر میخواهید پایتون را بهتر یاد بگیرید، می توانید از وب سایت آنوفل با ارائه آموزش مقدماتی پایتون استفاده کنید.

 

1.__init__ :

این متد اینگونه عمل می کند که وقتی از کلاس یک شی ایجاد کردید، این متد ابتدا صدا زده می شود و هنگامی که شما آبجکت(Object) می سازید ، مستقیما آرگومان ها را به کلاس ارسال می کند.

برای مثال ما در زیر یک کلاس داریم میخواهیم وقتی از آن یک آبجکت ساخته شد یک سری ویژگی (property) حتما وارد بشه :

#create Class
class Machine:
	""" Class doc string  """
	def __init__(self,brand,model):
		self.brand = brand
		self.model = model

#create an instance
mustang = Machine("Mustang",1990)
bmw = Machine("BMW",2023) 

2.__str__ :

این متد اینگونه عمل می کند که اگر بخواهید که یک آبجکت را مستقیم در دستور print بخواهید چاپش کنید. برای مثال :

#create Class
class Machine:
	""" Class doc string  """
	def __init__(self,brand,model):
		self.brand = brand
		self.model = model
		
	def __str__(self):
		return self.brand

#create an instance
mustang = Machine("Mustang",1990)
print(mustang) #output => mustang

 

3.__new__ :

با استفاده از این متد شما می توانید نمونه هایی که می سازید را کنترل کنید.و قبل از متد __init__ صدا زده می شود. برای مثال:

#create Class
class Machine:
	""" Class doc string  """
	def __new__(cls):
		print("your car : ")
		return super(Machine,cls).__new__(cls)
	def __init__(self):
		print("mustang")

		
Machine() 

#output => "your car : mustang"

 

4.__call__ :

وقتی از این متد در کلاس استقاده می کنید به نمونه های آن این تونایی را می دهد که همانند یک تابع رفتار کنند (به صورت تابع فراخوانی کنیم).

class Machine():
    def __init__(self, brand, model):
        self.brand = brand
        self.model = model
        
    def __call__(self):
        print(f"brand: {self.brand}, model: {self.model}")
        
      
mustang = Mustang("Mustang", 1990)


mustang() # output => brand: Mustang, model: 1990

مجیک متد های دیگری نیز وجود دارند که می توانید در داکیومنت های پایتون پیدا کنید.

#مجیک_متد#داندر_متد#پایتون#python#magicmethod
نظرات ارزشمند شما :

در حال دریافت...

مقاله های مشابه

در حال دریافت...