ፅሁፎች

Python እና የላቁ ዘዴዎች፣ ዱንደር ተግባራት ለተሻለ ፕሮግራም

Python ድንቅ የፕሮግራም አወጣጥ ቋንቋ ነው፣ እና እንደተረጋገጠው በ የፊልሙእንዲሁም በ2022 ሁለተኛው በጣም ታዋቂ ቋንቋ ነው።

የ Python በጣም አስደሳች ጥቅሞች ትልቅ የፕሮግራም አውጪዎች ማህበረሰብ ናቸው።

Python ለማንኛውም የአጠቃቀም ጉዳይ ጥቅል ያለው ይመስላል።

በፓይዘን ፕሮግራሚንግ ሰፊው ዓለም ውስጥ በጀማሪዎች ብዙ ጊዜ የማይታወቁ፣ ነገር ግን በቋንቋው ሥነ-ምህዳር ውስጥ ጉልህ ጠቀሜታ ያላቸው የባህሪዎች ስብስብ አለ።

የአስማት ዘዴዎች የቅድመ ዘዴዎች ስብስብ ናቸውdefiልዩ አገባብ ባህሪያትን የሚያቀርቡ በፓይዘን ውስጥ nites። እንደ መጀመሪያ እና መጨረሻ ላይ በድርብ ሰረዞች በቀላሉ ይታወቃሉ __init__, __call__, __len__ … ወዘተ.

አስማታዊ ዘዴዎች

የአስማት ዘዴዎች ብጁ ነገሮች አብሮ ከተሰራው የፓይዘን አይነት ጋር ተመሳሳይ ባህሪ እንዲኖራቸው ያስችላቸዋል።

በዚህ ጽሑፍ ውስጥ በኃይለኛው የዱንደር ተግባራት ላይ እናተኩራለን. ዓላማቸውን እንመረምራለን እና ስለ አጠቃቀማቸው እንነጋገራለን.

የ Python ጀማሪም ሆኑ ልምድ ያለው ፕሮግራመር፣ ይህ መጣጥፍ ዓላማው ስለ ዱንደር ተግባራት አጠቃላይ ግንዛቤን ለእርስዎ ለመስጠት ነው፣ ይህም የ Python ኮድ አሰጣጥ ተሞክሮዎን የበለጠ ቀልጣፋ እና አስደሳች ያደርገዋል።

ያስታውሱ የፓይዘን አስማት በቀላል እና ሁለገብነት ብቻ ሳይሆን እንደ ዱንደር ተግባራት ባሉ ኃይለኛ ባህሪያቱ ውስጥም ጭምር ነው።

__init__

ምናልባት ከሁሉም የበለጠ መሠረታዊው የዱንደር ተግባር። አዲስ ነገር በፈጠርን ቁጥር (ወይም ስሙ እንደሚያመለክተው) ፓይዘን በራስ ሰር የሚጠራው ይህ የአስማት ዘዴ ነው።__init__

ፒዛ ክፍል
def __init__(ራስ፣መጠን፣መጠን)
self.size = መጠን
ራስን.toppings = toppings

# አሁን ፒያሳ እንፍጠር
my_pizza = ፒዛ ('ትልቅ'፣ ['ፔፐሮኒ'፣ 'እንጉዳይ']))

ማተም(የእኔ_ፒዛ መጠን) # ይህ ያትማል፡ ትልቅ
print(my_pizza.toppings) # ይህ ያትማል: ['pepperoni', 'moshrooms']

በዚህ ምሳሌ, ፒዛ የሚባል ክፍል ተፈጥሯል. የኛን __init__ ተግባራችንን በመነሻ ጊዜ የምንገለጽ መለኪያዎችን አዘጋጀን እና ለብጁ እቃችን እንደ ባሕሪያት እናዘጋጃቸዋለን።

እዚህ, የክፍሉን ምሳሌ ለመወከል ጥቅም ላይ ይውላል. ስለዚህ ራስን መጠን = መጠን ስንጽፍ፡- “ሄይ፣ ይህ የፒዛ ነገር የባህሪ መጠን አለው” እያልን ነው። size, እና እቃውን ስፈጥር ያቀረብኩት መጠን እንዲሆን እፈልጋለሁ.

__st__ እና __repr__

__ስትር__

ይህ እንድንችል የሚፈቅድልን የፓይዘን አስማት ዘዴ ነው። defiለብጁ እቃችን መግለጫ nish

አንድ ነገር ሲያትሙ ወይም ተጠቅመው ወደ ሕብረቁምፊ ሲቀይሩት። str(), Python ካለህ አረጋግጥ defiአንድ ዘዴ ይዤ መጥቻለሁ __str__ ለዚያ ነገር ክፍል.

ከሆነ ነገሩን ወደ ሕብረቁምፊ ለመቀየር ያንን ዘዴ ይጠቀሙ።

ተግባርን ለማካተት የፒዛ ምሳሌያችንን ማራዘም እንችላለን __str__ እንደሚከተለው

ክፍል ፒዛ፡ ዴፍ __init__(እራስ፣መጠን፣ጣፋዎች)፡- ራስን መጠን = መጠን ራስን )}" my_pizza = ፒዛ('ትልቅ'፣ ['ፔፐሮኒ'፣ 'እንጉዳይ']) ማተም(የእኔ_ፒዛ) # ይህ ያትማል፡ ትልቅ ፒዛ ከፔፐሮኒ፣ እንጉዳዮች ጋር
__repr__

የ__str__ ተግባር የነገሩን ባህሪያት የሚገልጽ መደበኛ ያልሆነ መንገድ ነው። በሌላ በኩል፣ __repr__ ብጁ ነገርን የበለጠ መደበኛ፣ ዝርዝር እና የማያሻማ መግለጫ ለማቅረብ ይጠቅማል።

ከደወሉ repr() በአንድ ነገር ላይ ወይም የነገሩን ስም ወደ ኮንሶሉ ውስጥ ብቻ ይተይቡ፣ Python ዘዴን ይፈልጋል __repr__.

Se __str__ አይደለም definite፣ Python ይጠቀማል __repr__ ዕቃውን ለማተም ወይም ወደ ሕብረቁምፊ ለመቀየር በሚሞክርበት ጊዜ እንደ ምትኬ። ስለዚህ ብዙውን ጊዜ ጥሩ ሀሳብ ነው defiቢያንስ ጨርስ __repr__, ባያደርጉትም defiወጣ __str__.

እንዴት እንደቻልን እነሆ defiጨርስ __repr__ ለፒዛአችን ምሳሌ፡-

ፒዛ ክፍል
def __init__(ራስ፣መጠን፣መጠን)
self.size = መጠን
ራስን.toppings = toppings

def __repr__(ራስ):
ተመለስ f"ፒዛ('{self.size}'፣ {self.toppings})"

my_pizza = ፒዛ ('ትልቅ'፣ ['ፔፐሮኒ'፣ 'እንጉዳይ']))
ማተም(repr(የእኔ_ፒዛ)) # ይህ ያትማል፡ ፒዛ('ትልቅ'፣ ['ፔፐሮኒ'፣ 'እንጉዳይ']))

__repr__ የፒዛውን ነገር እንደገና ለመፍጠር እንደ Python ትእዛዝ ማስኬድ የሚችሉትን ሕብረቁምፊ ይሰጥዎታል ፣ ግን __str__ የበለጠ የሰው መግለጫ ይሰጥዎታል። እነዚህን የዱንደር ዘዴዎች በትንሹ በተሻለ ሁኔታ ለማኘክ እንደሚረዳዎት ተስፋ አደርጋለሁ!

__አክል__

በፓይዘን ውስጥ ኦፕሬተሩን በመጠቀም ቁጥሮችን ማከል እንደሚቻል ሁላችንም እናውቃለን +, እንደ 3 + 5.

ግን የአንዳንድ ብጁ ነገር ምሳሌዎችን ማከል ብንፈልግስ?

የዱንደር ተግባር __add__ ይህን ለማድረግ ያስችለናል. አቅም ይሰጠናል። defiየኦፕሬተሩን ባህሪ ያጥፉ + ለግል የተበጁ እቃዎች ላይ.

በቋሚነት ፍላጎት, እኛ እንደፈለግን እናስብ defiባህሪውን ጨርስ + በእኛ የፒዛ ምሳሌ ላይ. እንበል ሁለት ወይም ከዚያ በላይ ፒሳዎችን አንድ ላይ ስንጨምር፣ ሁሉንም ጣፋጮቻቸውን በራስ-ሰር ያጣምራል። ምን ሊመስል እንደሚችል እነሆ፡-

ፒዛ ክፍል
def __init__(ራስ፣መጠን፣መጠን)
self.size = መጠን
ራስን.toppings = toppings

def __አክል__(ራስ፣ ሌላ)
ካልሆነ (ሌላ ፒዛ)
TypeError ማሳደግ ("ሌላ ፒዛ ብቻ ነው ማከል የምትችለው!")
new_toppings = ራስን.toppings + ሌላ.toppings
ፒዛን ተመለስ(የራስ መጠን፣ አዲስ_ቶፕስ)

# ሁለት ፒሳዎችን እንፍጠር
ፒዛ1 = ፒዛ ('ትልቅ'፣ ['ፔፐሮኒ'፣ 'እንጉዳይ']))
pizza2 = ፒዛ ('ትልቅ'፣ ['ወይራ''፣ 'አናናስ']))

# አሁን ደግሞ "እንጨምርላቸው"
ጥምር_ፒዛ = ፒዛ1 + ፒዛ2

print(combined_pizza.toppings) # ይህ ያትማል: ['pepperoni', 'moshrooms', 'olives', 'pineapple']

ከዱንደር ጋር በተመሳሳይ __add__፣ እኛም እንችላለን defiእንደ ሌሎች የሂሳብ ስራዎችን ያጠናቅቁ __sub__ (ኦፕሬተሩን በመጠቀም በመቀነስ -) እና __mul__ (ኦፕሬተሩን በመጠቀም ለማባዛት *).

__ሌን__

ይህ የዱንደር ዘዴ ያስችለናል defiተግባሩን ጨርስ len() ለግል ብጁ ዕቃዎቻችን መመለስ አለብን።

Python ይጠቀማል len() እንደ ዝርዝር ወይም ሕብረቁምፊ ያለ የውሂብ መዋቅር ርዝመት ወይም መጠን ለማግኘት።

ከምሳሌአችን አንፃር፣ የፒዛ "ርዝመት" በውስጡ ያሉት የጣፋጮች ብዛት ነው ማለት እንችላለን። እንዴት ተግባራዊ ማድረግ እንደምንችል እነሆ፡-

ፒዛ ክፍል
def __init__(ራስ፣መጠን፣መጠን)
self.size = መጠን
ራስን.toppings = toppings

def __len__(ራስ):
የመመለሻ ሌን (self.toppings)

# ፒያሳ እንፍጠር
my_pizza = ፒዛ ('ትልቅ'፣ ['ፔፐሮኒ'፣ 'እንጉዳይ'፣ 'ወይራ']))

ማተም(ሌን(የእኔ_ፒዛ)) # ይህ ያትማል፡ 3

በ__len__ ዘዴ የዝርዝሩን ርዝመት ብቻ እንመለሳለን። toppings. አሁን ፣ len(my_pizza) በላዩ ላይ ምን ያህል ጣራዎች እንዳሉ ይነግረናል my_pizza.

__ ሂደት __

ይህ የዱንደር ዘዴ ዕቃዎችን ለመንከባከብ ያስችላል, ማለትም በ loop ውስጥ ጥቅም ላይ ሊውል ይችላል.

ይህንን ለማድረግ, እኛ ደግሞ አለብን defiተግባሩን ጨርስ __next__, ይህ ጥቅም ላይ ይውላል defiበድግግሞሹ ውስጥ የሚቀጥለውን እሴት መመለስ ያለበትን ባህሪ ይንሱ። በተጨማሪም በቅደም ተከተል ውስጥ ምንም ተጨማሪ ንጥረ ነገሮች እንደሌሉ በክስተቱ ላይ የሚደጋገሙትን ምልክት ማሳየት አለበት. በተለምዶ ይህንን የምናሳካው ልዩ ሁኔታን በመጣል ነው። StopIteration.

ለፒዛአችን ምሳሌ፣ መጠቅለያዎቹን መድገም እንፈልጋለን እንበል። የፒዛ ክፍላችንን ደጋግመን ልናደርገው እንችላለን definendo አንድ ዘዴ __iter__:

ፒዛ ክፍል
def __init__(ራስ፣መጠን፣መጠን)
self.size = መጠን
ራስን.toppings = toppings

def __iter__(ራስ):
ራስን.n = 0
ራስን መመለስ

def __ቀጣይ__(ራስ):
ራስን ከሆነ።n < len(self.toppings)፡-
ውጤት = ራስን.ቶፕስ [self.n]
ራስን.n += 1
የመመለሻ ውጤት
ሌላ
StopIteration ከፍ ማድረግ

# ፒያሳ እንፍጠር
my_pizza = ፒዛ ('ትልቅ'፣ ['ፔፐሮኒ'፣ 'እንጉዳይ'፣ 'ወይራ']))

# አሁን ደግሞ እንድገመው
በእኔ_ፒዛ ውስጥ ለመሙላት:
ማተም (መጨመሪያ)

በዚህ አጋጣሚ የ loop ጥሪዎች __iter__ቆጣሪን የሚያስጀምር (self.n) እና የፒዛውን ነገር እራሱ ይመልሳል (self).

ከዚያ የ loop ጥሪዎች __next__ እያንዳንዱን በየተራ ለማግኘት.

ጊዜ __next__ ሁሉንም ቅመማ ቅመሞች ተመልሰዋል ፣ StopIteration ለየት ያለ ሁኔታን ይፈጥራል እና ለ loop አሁን ምንም ተጨማሪ ነገሮች እንደሌሉ ያውቃል እና የመድገም ሂደቱን ያቋርጣል።

Ercole Palmeri

የኢኖቬሽን ጋዜጣ
በፈጠራ ላይ በጣም አስፈላጊ የሆነውን ዜና እንዳያመልጥዎት። በኢሜል ለመቀበል ይመዝገቡ።
መለያዎች: ጭረት

የቅርብ ጊዜ ጽሁፎች

Veeam ከጥበቃ እስከ ምላሽ እና ማገገሚያ ድረስ ለቤዛዌር በጣም አጠቃላይ ድጋፍን ያቀርባል

Coveware by Veeam የሳይበር ዘረፋ የአደጋ ምላሽ አገልግሎቶችን መስጠቱን ይቀጥላል። Coveware የፎረንሲክስ እና የማገገሚያ ችሎታዎችን ያቀርባል…

23 April 2024

አረንጓዴ እና ዲጂታል አብዮት፡- የመተንበይ ጥገና የነዳጅ እና ጋዝ ኢንዱስትሪን እንዴት እየለወጠ ነው።

የመተንበይ ጥገና የዘይት እና ጋዝ ዘርፉን አብዮት እያደረገ ነው፣ ለዕፅዋት አስተዳደር ፈጠራ እና ንቁ አቀራረብ።…

22 April 2024

የዩኬ ፀረ እምነት ተቆጣጣሪ የBigTech ማንቂያ በጄኔአይ ላይ ያስነሳል።

የዩኬ ሲኤምኤ ስለ ቢግ ቴክ ባህሪ በአርቴፊሻል ኢንተለጀንስ ገበያ ላይ ማስጠንቀቂያ ሰጥቷል። እዚያ…

18 April 2024

ካሳ አረንጓዴ፡ ለወደፊት ጣሊያን የኢነርጂ አብዮት

የሕንፃዎችን ኢነርጂ ውጤታማነት ለማሳደግ በአውሮፓ ህብረት የተቀረፀው የ"ኬዝ አረንጓዴ" ድንጋጌ የህግ አውጭ ሂደቱን በ…

18 April 2024

ፈጠራን በቋንቋዎ ያንብቡ

የኢኖቬሽን ጋዜጣ
በፈጠራ ላይ በጣም አስፈላጊ የሆነውን ዜና እንዳያመልጥዎት። በኢሜል ለመቀበል ይመዝገቡ።

ይከተሉን