بیشتر

Python او پرمختللي میتودونه، د غوره پروګرام کولو لپاره د ډنډ افعال

پایتون یوه په زړه پوری برنامه ژبه ده ، او لکه څنګه چې یې ثبوت شوی GitHub، په 2022 کې دویمه خورا مشهوره ژبه هم ده.

د Python ترټولو زړه پورې ګټې د پروګرامرانو لویه ټولنه ده.

داسې ښکاري چې پایتون د هرې کارونې قضیې لپاره بسته لري.

د Python برنامه کولو پراخه نړۍ کې ، د ځانګړتیاو یوه ټولګه شتون لري چې ډیری وختونه د پیل کونکو لخوا پام نه کیږي ، مګر د ژبې په ایکوسیستم کې خورا مهم اهمیت لري.

د جادو میتودونه د مخکینیو میتودونو مجموعه دهdefiپه Python کې nites چې ځانګړي ترکیبي ځانګړتیاوې وړاندې کوي. دوی په پیل او پای کې د دوی دوه ګونی ډشونو لخوا په اسانۍ پیژندل کیږي ، لکه __init__, __call__, __len__ … او داسې نور

د جادو طریقې

د جادو میتودونه دودیز شیانو ته اجازه ورکوي چې د جوړ شوي Python ډولونو سره ورته چلند وکړي.

په دې مقاله کې، موږ به د ځواکمنو ډنډر دندو تمرکز وکړو. موږ به د دوی هدف وپلټئ او د دوی کارولو په اړه به بحث وکړو.

که تاسو د Python نوی یا تجربه لرونکی برنامه یاست ، د دې مقالې هدف تاسو ته د ډنډر دندو جامع پوهه چمتو کول دي ، ستاسو د Python کوډینګ تجربه خورا مؤثره او خوندور کوي.

په یاد ولرئ، د Python جادو نه یوازې د هغې په سادګۍ او استقامت کې، بلکې د ډنډر افعال په څیر د دې ځواکمن ځانګړتیاو کې هم دی.

__نیت__

شاید د ټولو ترټولو لومړني ډنډر فعالیت. دا د جادو میتود دی چې پایتون په اتوماتيک ډول زنګ وهي کله چې موږ یو نوی څیز جوړ کړو (یا لکه څنګه چې نوم وړاندیز کوي ، پیل کړئ).__init__

د پیزا ټولګي:
def __init__ (ځان، اندازه، ټاپنګونه):
self.size = اندازه
self.toppings = toppings

# اوس راځئ چې پیزا جوړ کړو
my_pizza = پیزا('لوی'، ['پیپرونی'، 'مشروم'])

print(my_pizza.size) # دا به چاپ شي: لوی
print(my_pizza.toppings) # دا به چاپ شي: ['pepperoni', 'mashrooms']

په دې مثال کې، د پیزا په نوم یو ټولګی رامینځته شوی. موږ خپل __init__ فنکشن ترتیب کړ ترڅو د پیل کولو په وخت کې مشخص شوي پیرامیټرې پکې شاملې کړو، او زموږ د دودیز اعتراض لپاره یې د ملکیتونو په توګه تنظیم کړو.

دلته، دا د ټولګي د مثال په توګه کارول کیږي. نو کله چې موږ self.size = اندازه لیکو، موږ وایو، "ای، دا د پیزا څیز د ځانګړتیا اندازه لري size، او زه غواړم دا هر هغه اندازه وي چې ما چمتو کړې کله چې ما اعتراض رامینځته کړ".

__str__ او __repr__

__ستر__

دا د Python جادو میتود دی چې موږ ته اجازه راکوي defiزموږ د دودیز توکي لپاره توضیحات ورکړئ.

کله چې تاسو یو شی چاپ کړئ یا یې په کارولو سره تار ته واړوئ str()، Python وګورئ که تاسو لرئ defiزه د یوې طریقې سره راغلی یم __str__ د دې اعتراض ټولګي لپاره.

که داسې وي، دا طریقه وکاروئ ترڅو اعتراض په تار کې بدل کړئ.

موږ کولی شو زموږ د پیزا مثال وغځوو ترڅو فنکشن پکې شامل کړو __str__ په لاندې ډول:

کلاس پیزا: def __init__(self, size, toppings): self.size = اندازه self.toppings = toppings def __str__(self): د {','.join(self.toppings) سره f"A {self.size} پیزا بیرته راګرځئ )}" my_pizza = Pizza('large', ['pepperoni', 'mashrooms']) print(my_pizza) # دا به چاپ شي: یو لوی پیزا د مرچو سره، مشروم
__repr__

د __str__ فنکشن د یو څیز د ملکیتونو تشریح کولو غیر رسمي لاره ده. له بلې خوا، __repr__ د دودیز اعتراض د لا رسمي، مفصل او غیر واضح توضیحاتو چمتو کولو لپاره کارول کیږي.

که تاسو زنګ ووهئ repr() په یو څیز کې یا تاسو یوازې په کنسول کې د څیز نوم ولیکئ، پیتون به د یوې میتود په لټه کې وي __repr__.

Se __str__ نه دانه ده definite، Python به وکاروي __repr__ د بیک اپ په توګه کله چې هڅه وکړئ اعتراض چاپ کړئ یا یې په تار کې بدل کړئ. نو دا اکثرا یو ښه نظر دی defiلږترلږه ختم کړئ __repr__حتی که تاسو نه defiبهر راځي __str__.

دلته موږ څنګه کولای شو defiختم __repr__ زموږ د پیزا مثال لپاره:

د پیزا ټولګي:
def __init__ (ځان، اندازه، ټاپنګونه):
self.size = اندازه
self.toppings = toppings

def __repr__(ځان):
بیرته ستنیدنه f"Pizza('{self.size}', {self.toppings})"

my_pizza = پیزا('لوی'، ['پیپرونی'، 'مشروم'])
print(repr(my_pizza)) # دا به چاپ شي: پیزا('لوی'، ['پیپروني'، 'مشروم'])

__repr__ تاسو ته یو تار درکوي چې تاسو کولی شئ د پیزا څیز بیا جوړولو لپاره د Python کمانډ په توګه پرمخ وړئ ، پداسې حال کې چې __str__ تاسو ته ډیر انساني توضیحات درکوي. زه امید لرم چې دا تاسو سره د دې ډنډر میتودونو لږ ښه ژاولو کې مرسته کوي!

__زیاته__

په Python کې، موږ ټول پوهیږو چې د آپریټر په کارولو سره د شمیرو اضافه کول ممکن دي +لکه 3 + 5.

مګر څه که موږ غواړو د ځینې دودیز څیز مثالونه اضافه کړو؟

د ډنډ فعالیت __add__ دا موږ ته اجازه راکوي چې یوازې دا وکړو. دا موږ ته وړتیا راکوي defiد چلونکي چلند خراب کړئ + زموږ په شخصي توکو کې.

د دوام په ګټه، راځئ فرض کړو چې موږ غواړو defiچلند پای ته ورسوي + زموږ د پیزا مثال په اړه. راځئ چې ووایو هرکله چې موږ دوه یا ډیر پیزا یوځای کړو، دا به په اتوماتيک ډول د دوی ټول ټاپنګونه سره یوځای کړي. دلته هغه څه دي چې ممکن ورته ښکاري:

د پیزا ټولګي:
def __init__ (ځان، اندازه، ټاپنګونه):
self.size = اندازه
self.toppings = toppings

def __add__(ځان، نور):
که مثال نه وي (نور، پیزا):
د TypeError پورته کړئ ("تاسو یوازې یو بل پیزا اضافه کولی شئ!")
new_toppings = self.toppings + other.toppings
د پیزا بیرته راګرځول

# راځئ چې دوه پیزا جوړ کړو
pizza1 = پیزا('لوی'، ['پیپرونی'، 'مشروم'])
pizza2 = پیزا('لوی'، ['زیتون'، 'انناس'])

# او اوس راځئ چې دوی "اضافه" کړو
combined_pizza = pizza1 + pizza2

print(combined_pizza.toppings) # دا به چاپ شي: ['pepperoni', 'Mushrooms', 'olives', 'inapple']

په ورته ډول ډنډر ته __add__، موږ هم کولی شو defiد ریاضیاتو نور فعالیتونه پای ته ورسوي لکه __sub__ (د آپریټر په کارولو سره د تخفیف په واسطه -) او __mul__ (د آپریټر په کارولو سره د ضرب کولو لپاره *).

__لین__

دا د ډنډ طریقه موږ ته اجازه راکوي defiڅه فنکشن ختم کړئ len() باید زموږ د دودیز توکو لپاره بیرته راستانه شي.

Python کاروي len() د معلوماتو جوړښت اوږدوالی یا اندازه ترلاسه کول لکه لیست یا تار.

زموږ د مثال په شرایطو کې ، موږ کولی شو ووایو چې د پیزا "اوږدوالی" د ټاپنګونو شمیر دی چې دا لري. دلته موږ دا څنګه پلي کولی شو:

د پیزا ټولګي:
def __init__ (ځان، اندازه، ټاپنګونه):
self.size = اندازه
self.toppings = toppings

def __len__(ځان):
بیرته ستنیدنه (self.toppings)

# راځئ چې پیزا جوړ کړو
my_pizza = پیزا('لوی'، ['پیپرونی'، 'مشروم'، 'زیتون'])

print(len(my_pizza)) # دا به چاپ شي: 3

په __len__ میتود کې، موږ یوازې د لیست اوږدوالی بیرته راګرځوو toppings. اوس ، len(my_pizza) دا به موږ ته ووایي چې په دې کې څومره ټاپونه دي my_pizza.

__ پروسه __

دا ډنډر میتود شیانو ته اجازه ورکوي چې تکراري وي، د بیلګې په توګه دا د لوپ لپاره کارول کیدی شي.

د دې کولو لپاره، موږ باید هم defiفعالیت پای ته ورسوي __next__، دا د دې لپاره کارول کیږي defiهغه چلند چې باید په تکرار کې راتلونکی ارزښت بیرته راولي. دا باید په هغه پیښه کې تکراري نښه هم وکړي چې په ترتیب کې نور عناصر شتون نلري. موږ عموما دا د استثنا په اچولو سره ترلاسه کوو StopIteration.

زموږ د پیزا مثال لپاره ، راځئ چې ووایو موږ غواړو ټاپنګونه تکرار کړو. موږ کولی شو زموږ د پیزا ټولګي تکراري کړو defiیوه طریقه غوره کړئ __iter__:

د پیزا ټولګي:
def __init__ (ځان، اندازه، ټاپنګونه):
self.size = اندازه
self.toppings = toppings

def __iter__(ځان):
self.n = 0
خپل ځان بیرته راستانه کړئ

def __راتلونکی__(ځان):
که self.n <len(self.toppings):
پایله = ځان ته پورته کول[self.n]
self.n += 1
بیرته راګرځیدل
بل:
StopIteration لوړول

# راځئ چې پیزا جوړ کړو
my_pizza = پیزا('لوی'، ['پیپرونی'، 'مشروم'، 'زیتون'])

# او اوس راځئ چې دا تکرار کړو
په my_pizza کې د ټاپ کولو لپاره:
چاپ (ټپ کول)

په دې حالت کې، د لوپ زنګونو لپاره __iter__، کوم چې یو کاونټر پیل کوي (self.n) او پخپله د پیزا څیز بیرته راګرځوي (self).

بیا، د لوپ زنګونو لپاره __next__ د هر ټاپنګ په بدل کې ترلاسه کولو لپاره.

کله چې __next__ ټول مصالحات بیرته راستانه شول StopIteration دا یو استثنا وغورځوي او د لوپ لپاره اوس پوهیږي چې نور ټاپنګونه شتون نلري او له همدې امله به د تکرار پروسه لغوه کړي.

Ercole Palmeri

د نوښت خبر پاڼه
د نوښت په اړه خورا مهم خبرونه له لاسه مه ورکوئ. د بریښنالیک له لارې دوی ترلاسه کولو لپاره لاسلیک وکړئ.
توري: پيډون

وروستي مقالې

خپرونکي او OpenAI تړونونه لاسلیک کوي ترڅو د مصنوعي استخباراتو لخوا پروسس شوي معلوماتو جریان تنظیم کړي

تیره دوشنبه، فایننشل ټایمز د OpenAI سره یوه معامله اعلان کړه. FT د نړۍ په کچه ژورنالیزم جواز ورکوي ...

30 اپریل 2024

آنلاین تادیات: دلته د سټیمینګ خدمات تاسو ته د تل لپاره تادیه کوي

ملیونونه خلک د سټیمینګ خدماتو لپاره تادیه کوي ، د میاشتنۍ ګډون فیس ورکوي. دا عام نظر دی چې تاسو…

29 اپریل 2024

Veeam د ransomware لپاره خورا پراخه ملاتړ وړاندې کوي ، له محافظت څخه تر غبرګون او رغیدو پورې

د Veeam لخوا Coveware به د سایبر غصب پیښو غبرګون خدماتو چمتو کولو ته دوام ورکړي. Coveware به د عدلي او درملنې وړتیاوې وړاندې کړي ...

23 اپریل 2024

شنه او ډیجیټل انقلاب: د وړاندوینې وړ ساتنه څنګه د تیلو او ګاز صنعت بدلوي

د وړاندوینې ساتنه د تیلو او ګاز سکتور کې انقلاب رامینځته کوي ، د نبات مدیریت لپاره د نوښت او فعال چلند سره.

22 اپریل 2024

نوښت په خپله ژبه ولولئ

د نوښت خبر پاڼه
د نوښت په اړه خورا مهم خبرونه له لاسه مه ورکوئ. د بریښنالیک له لارې دوی ترلاسه کولو لپاره لاسلیک وکړئ.

مونږ سره په