Articles

ʻO Python a me nā ʻano holomua, nā hana dunder no ka hoʻolālā maikaʻi

He ʻōlelo hoʻolālā maikaʻi ʻo Python, a e like me ka mea i hōʻike ʻia e GitHub, ʻo ia ka lua o ka ʻōlelo kaulana loa ma 2022.

ʻO nā pōmaikaʻi hoihoi loa o Python ʻo ia ke kaiāulu nui o nā mea papahana.

Me he mea lā he pūʻolo ko Python no kekahi hihia hoʻohana.

I ka honua nui o ka polokalamu Python, aia kekahi mau hiʻohiʻona i ʻike pinepine ʻole ʻia e ka poʻe hoʻomaka, akā he koʻikoʻi koʻikoʻi i ka kaiaola o ka ʻōlelo.

ʻO nā ʻano hana hoʻokalakupua he hoʻonohonoho muadefii hoʻopaʻa ʻia ma Python e hāʻawi i kahi hana syntactic kūikawā. Hoʻomaopopo maʻalahi lākou e kā lākou mau kaha pālua i ka hoʻomaka a me ka hopena, e like me __init__, __call__, __len__ … etc.

ʻO nā ʻano kupua

Hāʻawi nā hana kilokilo i nā mea maʻamau e hana like me nā ʻano Python i kūkulu ʻia.

Ma kēia ʻatikala, e nānā mākou i nā hana dunder ikaika. E ʻimi mākou i kā lākou kumu a kūkākūkā i kā lākou hoʻohana.

Inā ʻoe he Python novice a i ʻole ka mea papahana ʻike, manaʻo kēia ʻatikala e hāʻawi iā ʻoe i kahi ʻike piha o nā hana Dunder, e hoʻolilo i kāu ʻike Python coding i ʻoi aku ka maikaʻi a me ka leʻaleʻa.

E hoʻomanaʻo, ʻaʻole wale ka mea kilokilo o Python i kona maʻalahi a me ka versatility, akā i loko o kāna mau hiʻohiʻona ikaika e like me nā hana Dunder.

__init__

ʻO ka hana dunder maʻamau paha o nā mea a pau. ʻO kēia ke ʻano hana hoʻokalakupua a Python e kāhea maʻalahi ai i nā manawa a mākou e hana ai (a i ʻole e like me ka inoa e kuhikuhi ai, hoʻomaka) i kahi mea hou.__init__

papa Pizza:
def __init__(self, size, toppings):
iho.nui = nui
self.toppings = kāpalapala

# E hana mākou i kahi pizza
my_pizza = Pizza('nui', ['pepperoni', 'halo'])

paʻi(my_pizza.size) # E paʻi kēia: nui
print(my_pizza.toppings) # E paʻi kēia: ['pepperoni', 'mushrooms']

Ma kēia laʻana, hana ʻia kahi papa i kapa ʻia ʻo Pizza. Hoʻonohonoho mākou i kā mākou hana __init__ e hoʻokomo i nā ʻāpana e kuhikuhi ʻia i ka manawa hoʻomaka, a hoʻonoho iā lākou i waiwai no kā mākou mea maʻamau.

Maʻaneʻi, hoʻohana ʻia ia e hōʻike i ke ʻano o ka papa. No laila, ke kākau mākou iā self.size = nui, ke ʻōlelo nei mākou, "E, he ʻano nui kēia mea pizza size, a makemake wau e like me ka nui aʻu i hāʻawi ai i ka wā i hana ai au i ka mea".

__str__ a me __repr__

__Str__

ʻO kēia ka hana kilokilo a Python e hiki ai iā mākou ke hana definite kahi wehewehe no kā mākou mea maʻamau.

Ke paʻi ʻoe i kahi mea a hoʻololi paha i kahi kaula me ka hoʻohana ʻana str(), Nānā Python inā loaʻa iā ʻoe defihoʻopau i kahi ala __str__ no ka papa o ia mea.

Inā pēlā, e hoʻohana i kēlā ʻano hana e hoʻololi i ka mea i kahi kaula.

Hiki iā mākou ke hoʻonui i kā mākou Pizza laʻana e hoʻokomo i kahi hana __str__ penei:

papa Pizza: def __init__(self.size, toppings): self.size = size self.toppings = toppings def __str__(self): ho'iho'i f"A {self.size} pizza with {', '.join(self.toppings )}" my_pizza = Pizza('nui', ['pepperoni', 'mushrooms']) paʻi(my_pizza) # E paʻi kēia: He pizza nui me ka pepperoni, nā halo.
__repr__

ʻO ka hana __str__ he ala ʻike ʻole ia e wehewehe i nā waiwai o kahi mea. Ma ka ʻaoʻao ʻē aʻe, hoʻohana ʻia ʻo __repr__ e hāʻawi i kahi wehewehe kikoʻī, kikoʻī a maopopo ʻole o ka mea maʻamau.

Inā kāhea ʻoe repr() ma kahi mea a i ʻole ʻoe e kākau i ka inoa mea i loko o ka console, e ʻimi ʻo Python i kahi ala __repr__.

Se __str__ ʻaʻole ia definite, e hoʻohana ʻo Python __repr__ ma ke ʻano he hoʻihoʻi i ka wā e hoʻāʻo ai e paʻi i ka mea a hoʻololi paha i kahi kaula. No laila he manaʻo maikaʻi loa ia defipau ma ka liʻiliʻi __repr__, inā ʻaʻole ʻoe defipau __str__.

Eia ka mea hiki iā mākou defihoʻopau __repr__ no kā mākou laʻana pizza:

papa Pizza:
def __init__(self, size, toppings):
iho.nui = nui
self.toppings = kāpalapala

def __repr__(self):
hoʻihoʻi f"Pizza('{self.size}', {self.toppings})"

my_pizza = Pizza('nui', ['pepperoni', 'halo'])
paʻi(repr(my_pizza)) # E paʻi kēia: Pizza('nui', ['pepperoni', 'halo'])

__repr__ hāʻawi iā ʻoe i kahi kaula hiki iā ʻoe ke holo ma ke ʻano he kauoha Python e hana hou i ka mea pizza, akā __str__ hāʻawi iā ʻoe i kahi wehewehe kanaka hou aʻe. Manaʻo wau e kōkua ʻoe iā ʻoe e ʻoi aku ka maikaʻi o kēia mau ala dunder!

__hoʻohui__

Ma Python, ʻike mākou a pau hiki ke hoʻohui i nā helu me ka hoʻohana ʻana i ka mea hoʻohana +, like 3 + 5.

Akā pehea inā makemake mākou e hoʻohui i nā manawa o kekahi mea maʻamau?

ʻO ka hana dunder __add__ hiki iā mākou ke hana pēlā. Hāʻawi ia iā mākou i ka manawa e defihoʻomaʻemaʻe i ke ʻano o ka mea hoʻohana + ma kā mākou mau mea pilikino.

I ka makemake o ka paʻa, e manaʻo mākou makemake mākou definite ke ano o + ma kā mākou laʻana pizza. E ʻōlelo kākou i kēlā me kēia manawa a mākou e hoʻohui pū ai i ʻelua a ʻoi aku paha nā pizzas, e hoʻohui ʻokoʻa ia i kā lākou toppings āpau. Penei paha kona ano:

papa Pizza:
def __init__(self, size, toppings):
iho.nui = nui
self.toppings = kāpalapala

def __add__(self, other):
inā ʻaʻole isinstance('ē aʻe, Pizza):
hoʻokiʻekiʻe TypeError("Hiki iā ʻoe ke hoʻohui i kahi Pizza ʻē aʻe!")
new_toppings = self.toppings + other.toppings
hoʻihoʻi i ka Pizza(self.size, new_toppings)

# E hana mākou i ʻelua pizzas
pizza1 = Pizza('nui', ['pepperoni', 'halo'])
pizza2 = Pizza('nui', ['olive', 'pineapple'])

# A i kēia manawa e "hoʻohui" iā lākou
hui_pizza = pizza1 + pizza2

print(combined_pizza.toppings) # E paʻi kēia: ['pepperoni', 'mushroom', 'olive', 'pineapple']

Like me ka dunder __add__, hiki nō iā mākou definite nā hana helu ʻē aʻe e like me __sub__ (ma ka unuhi ʻana me ka hoʻohana ʻana i ka mea hoʻohana -) ' __mul__ (no ka hoonui ana me ka mea hoohana *).

__len__

ʻO kēia ala dunder hiki iā mākou ke definish he aha ka hana len() pono e hoʻi mai no kā mākou mau mea i hana ʻia.

Hoʻohana ʻo Python len() e kiʻi i ka lōʻihi a i ʻole ka nui o kahi hoʻolālā ʻikepili e like me ka papa inoa a i ʻole ke kaula.

Ma ka pōʻaiapili o kā mākou laʻana, hiki iā mākou ke ʻōlelo ʻo ka "lōʻihi" o kahi pizza ka helu o nā toppings i loaʻa iā ia. Eia pehea mākou e hoʻokō ai:

papa Pizza:
def __init__(self, size, toppings):
iho.nui = nui
self.toppings = kāpalapala

def __len__(self):
hoihoi len(self.toppings)

# E hana kākou i ka pizza
my_pizza = Pizza('nui', ['pepperoni', 'halo', 'oliva'])

paʻi(len(my_pizza)) # E paʻi kēia: 3

Ma ke ʻano __len__, hoʻihoʻi wale mākou i ka lōʻihi o ka papa inoa toppings. I kēia manawa, len(my_pizza) e haʻi mai iā mākou i ka nui o nā toppings ma luna my_pizza.

__ kaʻina hana __

Hiki i kēia ʻano dunder ke hoʻololi i nā mea, ʻo ia hoʻi, hiki ke hoʻohana ʻia i loko o ka loop loop.

No ka hana ʻana i kēia, pono mākou defihoʻopau i ka hana __next__, Hoʻohana ʻia kēia no defie hoʻopau i ka hana e hoʻihoʻi i ka waiwai aʻe i ka ʻike. Eia kekahi, pono ia e hōʻailona i ka iterable i ka hanana ʻaʻohe mea hou i ke kaʻina. Hoʻokō maʻamau mākou i kēia ma ka hāpai ʻana i kahi ʻokoʻa StopIteration.

No kā mākou hiʻohiʻona pizza, e ʻōlelo mākou makemake mākou e hoʻomaʻamaʻa i nā toppings. Hiki iā mākou ke hana i kā mākou papa Pizza iterable defihaawi ana i ke ano __iter__:

papa Pizza:
def __init__(self, size, toppings):
iho.nui = nui
self.toppings = kāpalapala

def __iter__(self):
iho.n = 0
hoʻihoʻi iā ʻoe iho

def __next__(self):
ina iho.n < len(self.toppings):
hopena = self.toppings[self.n]
iho.n += 1
hopena hoʻihoʻi
ʻē aʻe:
hoʻokiʻekiʻe StopIteration

# E hana kākou i ka pizza
my_pizza = Pizza('nui', ['pepperoni', 'halo', 'oliva'])

# A i kēia manawa e hoʻomau hou aku kāua
no ka ʻai ʻana i kaʻu_pizza:
paʻi (topping)

I kēia hihia, kāhea ka loop loop __iter__, ka mea e hoʻomaka i kahi counter (self.n) a hoʻihoʻi i ka mea pizza ponoʻī (self).

A laila, kāhea ka loop for __next__ e kiʻi i kēlā me kēia topping i ka huli.

ka wā __next__ hoʻihoʻi i nā mea ʻala a pau, StopIteration hoʻolei ia i kahi ʻokoʻa a ʻike ka loop for i kēia manawa ʻaʻohe mea hou a no laila e kāpae i ke kaʻina hana.

Ercole Palmeri

Nupepa hou
Mai poina i ka nūhou nui loa e pili ana i ka hana hou. E kākau inoa e loaʻa iā lākou ma ka leka uila.
Nā huaʻōlelo: python

Nā nūpepa hou

Eia ka wā e hiki mai ana: Pehea e hoʻololi ai ka ʻoihana moku i ka hoʻokele waiwai honua

He mana hoʻokele waiwai maoli ka ʻāpana moana, kahi i hoʻokele i kahi mākeke 150 biliona ...

1 Mei 2024

Hoʻopaʻa inoa nā mea hoʻopuka a me OpenAI i nā ʻaelike e hoʻoponopono i ka kahe o ka ʻike i hana ʻia e Artificial Intelligence

I ka Pōʻakahi i hala, ua hoʻolaha ka Financial Times i kahi kuʻikahi me OpenAI. Laikini ʻo FT i kāna nūpepa papa honua…

30ʻApelila 2024

Uku Online: Eia ke ʻano e uku mau ai nā lawelawe Streaming iā ʻoe

E uku ana nā miliona o ka poʻe no nā lawelawe streaming, e uku ana i nā uku kau inoa o kēlā me kēia mahina. He manaʻo maʻamau ʻoe…

29ʻApelila 2024

Hōʻike ʻo Veeam i ke kākoʻo piha loa no ka ransomware, mai ka pale ʻana i ka pane a me ka hoʻihoʻi

E hoʻomau ʻo Coveware e Veeam i ka hoʻolako ʻana i nā lawelawe pane ʻana i ka hanana cyber extortion. E hāʻawi ʻo Coveware i nā forensics a me nā mana hoʻoponopono…

23ʻApelila 2024