Tefito

Ko te Python me nga tikanga matatau, nga mahi dunder mo te pai ake o nga kaupapa

Ko te Python he reo hötaka tino pai, me te whakaatu mai GitHub, ko te reo tuarua tino rongonui i te tau 2022.

Ko nga painga tino pai o Python ko te hapori nui o nga kaiwhakatakoto kaupapa.

Te ahua nei kei a Python tetahi kete mo tetahi keehi whakamahi.

I roto i te ao nui o te kaupapa Python, he huinga o nga ahuatanga kaore e kitea e te hunga hou, engari he mea nui ki te puunaha hauropi o te reo.

Ko nga tikanga makutu he huinga o nga tikanga o muadefinites i roto i te Python e whakarato ana i nga ahuatanga syntactic motuhake. He ngawari te mohio ki a raatau ma o raatau tohu takirua i te timatanga me te mutunga, penei __init__, __call__, __len__ … etc.

Nga Tikanga Maamaa

Ka taea e nga tikanga makutu te ahua o nga mea ritenga ki nga momo Python kua hangaia.

I roto i tenei tuhinga, ka arotahi tatou ki nga mahi kaha o te dunder. Ka tuhurahia e maatau te kaupapa me te korero mo te whakamahinga.

Ahakoa he tauhou a Python koe, he kaiwhakatakoto kaupapa mohio ranei, e whai ana tenei tuhinga ki te whakarato ki a koe i te maaramatanga matawhānui mo nga mahi a Dunder, kia pai ake ai to wheako tohu Python.

Kia maumahara, ko te makutu o Python ehara i te mea ko te ngawari me te ngawari, engari ko nga ahuatanga kaha penei i nga mahi a Dunder.

__init__

Pea ko te tino mahi dunder taketake o te katoa. Koinei te tikanga makutu e karanga aunoatia ana e Python i nga wa katoa ka waihangahia e matou (i runga ranei i te ingoa e kii ana, arawhiti) he ahanoa hou.__init__

Piha karaehe:
def __init__(whaiaro, rahi, toppings):
whaiaro.rahi = rahi
whaiaro.toppings = toppings

# Inaianei me hanga he pizza
my_pizza = Pizza('nui', ['pepperoni', 'harore'])

tā(my_pizza.size) # Ka tā tēnei: ​​nui
tā(my_pizza.toppings) # Ka tā: ['pepperoni', 'harore']

I tenei tauira, ka hangaia he karaehe e kiia nei ko Pizza. I whakaturia e matou ta matou mahi __init__ ki te whakauru i nga tawhā ka tohua i te wa arawhiti, ka whakatauhia hei taonga mo a maatau mea ritenga.

I konei, ka whakamahia hei tohu i te tauira o te karaehe. Na ka tuhi tatou self.size = rahi, kei te kii tatou, "Hey, he rahi huanga to tenei ahanoa pizza size, a ko taku hiahia kia rite ki te rahi i hoatu e ahau i te wa i hanga ai e au te ahanoa”.

__str__ me __repr__

__Str__

Koinei te tikanga makutu a Python e taea ai e tatou definish he whakaahuatanga mo a maatau mea ritenga.

Ina ta koe i tetahi mea, ka huri ranei ki te aho ma te whakamahi str(), Tirohia te Python mena kei a koe defiKua puta mai he tikanga __str__ mo te akomanga o taua mea.

Ki te pera, whakamahia taua tikanga hei huri i te ahanoa ki te aho.

Ka taea e tatou te whakawhānui atu i to tatou tauira Pizza ki te whakauru i tetahi mahi __str__ e whai ake nei:

Piha akomanga: def __init__(whaiaro, rahi, toppings): whaiaro.size = rahi self.toppings = toppings def __str__(self): whakahokia f"He {self.size} pizza with {', '.join(self.toppings )}" my_pizza = Pizza('nui', ['pepperoni', 'harore']) tā(my_pizza) # Ka tā tenei: He pizza nui me te pepperoni, harore
__repr__

Ko te mahi __str__ he tikanga opaki mo te whakaahua i nga ahuatanga o tetahi mea. I tetahi atu taha, ka whakamahia te __repr__ ki te whakarato i tetahi whakaahuatanga okawa ake, taipitopito me te maamaa mo te ahanoa ritenga.

Ki te waea koe repr() i runga i tetahi ahanoa ka pato noa ranei koe i te ingoa ahanoa ki te papatohu, ka rapua e Python tetahi tikanga __repr__.

Se __str__ ehara i te mea defii te ahiahi, ka whakamahia e Python __repr__ hei tārua ina ngana ana ki te tā i te ahanoa ki te huri ranei ki te aho. No reira he whakaaro pai tonu defiwhakaoti i te iti rawa __repr__, ahakoa kaore koe defipai __str__.

Anei me pehea e taea ai e matou defimutu __repr__ mo ta maatau tauira pizza:

Piha karaehe:
def __init__(whaiaro, rahi, toppings):
whaiaro.rahi = rahi
whaiaro.toppings = toppings

def __repr__(whaiaro):
whakahokia f"Pizza('{self.size}', {self.toppings})"

my_pizza = Pizza('nui', ['pepperoni', 'harore'])
tā(repr(my_pizza)) # Ka tā tēnei: ​​Pizza('nui', ['pepperoni', 'harore'])

__repr__ ka hoatu he aho ki a koe ka taea e koe te whakahaere hei whakahau Python ki te hanga ano i te ahanoa pizza, engari __str__ ka hoatu ki a koe he whakaahuatanga tangata ake. Ko taku tumanako ka awhina koe ki te ngaungau i enei tikanga dunder kia pai ake!

__tāpiri__

I roto i te Python, e mohio ana tatou ka taea te taapiri i nga nama ma te whakamahi i te kaiwhakahaere +, rite 3 + 5.

Engari ka pehea mena ka hiahia taatau ki te taapiri i nga tauira o etahi mea ritenga?

Ko te mahi dunder __add__ ka taea e tatou te mahi pera. Ka homai e ia te kaha ki a tatou definish te whanonga o te kaiwhakahaere + i runga i a maatau taonga whaiaro.

I roto i te hiahia o te riterite, me whakaaro tatou e hiahia ana tatou defimutu te whanonga o + i runga i ta maatau tauira pizza. Me kii tatou ka taapirihia kia rua, neke atu ranei nga pizzas, ka whakakotahi aunoa i o ratou toppings katoa. Anei te ahua o te ahua:

Piha karaehe:
def __init__(whaiaro, rahi, toppings):
whaiaro.rahi = rahi
whaiaro.toppings = toppings

def __add__(whaiaro, atu):
ki te kore he isinstance(etahi atu, Pizza):
whakaarahia TypeError("Ka taea e koe anake te taapiri i tetahi atu Pizza!")
new_toppings = whaiaro.toppings + other.toppings
whakahokia Pizza(self.size, new_toppings)

# Me hanga e rua nga pizzas
pizza1 = Pizza('nui', ['pepperoni', 'harore'])
pizza2 = Pizza('nui', ['olive', 'pineaporo'])

# Na inaianei me "tapiri" ratou
whakakotahi_pizza = pizza1 + pizza2

tā(combined_pizza.toppings) # Ka tā tēnei: ​​['pepperoni', 'harore', 'olive', 'pineapple']

He rite ano ki te dunder __add__, ka taea hoki e tatou defiwhakaoti i etahi atu mahi tatau penei i __sub__ (ma te tangohanga ma te whakamahi i te kaiwhakahaere -) ā __mul__ (mo te whakarea ma te whakamahi i te kaiwhakahaere *).

__len__

Ma tenei tikanga dunder ka taea e taatau defioti te mahi len() me hoki mai mo a maatau mea kua whakaritea.

Ka whakamahia e Python len() ki te tiki i te roa, te rahi ranei o te hanganga raraunga penei i te rarangi, aho ranei.

I roto i te horopaki o to tatou tauira, ka taea e tatou te kii ko te "roa" o te pizza ko te maha o nga toppings kei a ia. Anei me pehea e taea ai e matou te whakatinana:

Piha karaehe:
def __init__(whaiaro, rahi, toppings):
whaiaro.rahi = rahi
whaiaro.toppings = toppings

def __len__(whaiaro):
whakahokia len(self.toppings)

# Me hanga he pizza
my_pizza = Pizza('nui', ['pepperoni', 'harore', ' oriwa'])

tā(len(my_pizza)) # Ka tā tēnei: ​​3

I te tikanga __len__, ka whakahokia noa te roa o te rarangi toppings. Na, len(my_pizza) ka whakaatu mai e hia nga toppings kei runga my_pizza.

__tikanga__

Ko tenei tikanga dunder ka taea e nga mea te huri, ara, ka taea te whakamahi i roto i te mo te koropiko.

Ki te mahi i tenei, me maatau ano defiwhakaoti i te mahi __next__, Ka whakamahia tenei mo defiwhakamutua te whanonga e hoki mai ai te uara e whai ake nei i roto i te whitiwhitinga. Me tohu ano i te kaitahuri i runga i te mea kua kore he huānga o te raupapa. I te nuinga o te wa ka tutuki tenei ma te maka i tetahi tuunga StopIteration.

Mo ta maatau tauira pizza, me kii e hiahia ana matou ki te huri i nga toppings. Ka taea e taatau te whakarite i to maatau karaehe Pizza definendo a tikanga __iter__:

Piha karaehe:
def __init__(whaiaro, rahi, toppings):
whaiaro.rahi = rahi
whaiaro.toppings = toppings

def __iter__(whaiaro):
whaiaro.n = 0
hoki mai

def __next__(whaiaro):
if self.n < len(self.toppings):
hua = self.toppings[self.n]
whaiaro.n += 1
hua whakahoki
atu:
whakaarahia StopIteration

# Me hanga he pizza
my_pizza = Pizza('nui', ['pepperoni', 'harore', ' oriwa'])

# Inaianei me huri ano
mo te tihi i taku_pizza:
tā(topping)

I roto i tenei take, ka karanga te mo te koropiko __iter__, ka arawhiti i te porotiti (self.n) me te whakahoki ano i te mea pizza (self).

Na, ka karanga te mo te koropiko __next__ ki te tiki ia topping i roto i te huri.

Anei __next__ whakahokia nga mea kakara katoa, StopIteration ka maka he okotahi ka mohio te mo te karekau kua kore he toppings ka mutu te tukanga whitiwhiti.

Ercole Palmeri

Panui houtanga
Kaua e ngaro nga korero tino nui mo te mahi auaha. Waitohu ki te whiwhi i a raatau ma te imeera.
Tags: nānati

Nga tuhinga o mua

Ka haina nga Kaiwhakaputa me te OpenAI i nga whakaaetanga hei whakahaere i te rere o nga korero i tukatukahia e Artificial Intelligence

I te Mane kua hipa, i panuitia e te Financial Times tetahi mahi me OpenAI. Ka raihana a FT i tana kairipoata o te ao…

30 Paenga-whāwhā 2024

Utu Ipurangi: Anei te pehea o nga Ratonga Rere e Utu ana koe mo ake tonu atu

E hia miriona nga taangata e utu ana mo nga ratonga rerema, e utu ana i nga utu ohaurunga ia marama. Ko te whakaaro noa ko koe…

29 Paenga-whāwhā 2024

Kei a Veeam te tautoko tino whanui mo te ransomware, mai i te whakamarumaru ki te whakautu me te whakaora

Ka whakarato tonu a Coveware na Veeam i nga ratonga whakautu mai i nga aitua. Ka tukuna e Coveware nga mahi whakawai me te whakatikatika…

23 Paenga-whāwhā 2024

Hurihuri Kakariki me te Mamati: He pehea te Huringa Matapae i te Hurihanga i te Ahumahi Hinu me te Hau

Ko te tiaki matapae kei te huri haere i te waahanga hinu me te hau, me te huarahi auaha me te kaha ki te whakahaere tipu.…

22 Paenga-whāwhā 2024